Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione Sony Xperia 1 VII: lo smartphone per gli appassionati di fotografia
Recensione Sony Xperia 1 VII: lo smartphone per gli appassionati di fotografia
Sony Xperia 1 VII propone un design sobrio e funzionale, con un comparto fotografico di ottimo livello caratterizzato da uno zoom continuo e prestazioni generali da top di gamma puro. Viene proposto con una personalizzazione software sobria e affidabile, ma presenta qualche criticità sul fronte ricarica rapida. Il dispositivo punta su continuità stilistica e miglioramenti mirati, rivolgendosi al solito pubblico specifico del brand giapponese.
Attenti a Poco F7: può essere il best buy del 2025. Recensione
Attenti a Poco F7: può essere il best buy del 2025. Recensione
Poco F7 5G, smartphone che punta molto sulle prestazioni grazie al processore Snapdragon 8s Gen 4 e a un display AMOLED da ben 6,83 pollici. La casa cinese mantiene la tradizione della serie F offrendo specifiche tecniche di alto livello a un prezzo competitivo, con una batteria generosissima da 6500 mAh e ricarica rapida a 90W che possono fare la differenza per gli utenti più esigenti.
Recensione Samsung Galaxy Z Fold7: un grande salto generazionale
Recensione Samsung Galaxy Z Fold7: un grande salto generazionale
Abbiamo provato per molti giorni il nuovo Z Fold7 di Samsung, un prodotto davvero interessante e costruito nei minimi dettagli. Rispetto al predecessore, cambiano parecchie cose, facendo un salto generazionale importante. Sarà lui il pieghevole di riferimento? Ecco la nostra recensione completa.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 30-03-2006, 10:10   #1
giack83
Senior Member
 
Iscritto dal: Nov 2004
Messaggi: 862
Algoritmo per problema TST in C??

Salve a tutti,

devo implementare il problema del commesso viaggiatore in C; in poche parole date 1000 cordinate di citta, devo trovare il cammini (percorso) piu breve per passarle tutte.
Han detto di utilizzare l'algoritmo 2 OPT.
Cercando in google non ho trovato informazioni su esso, ci sarebbe qualcuno che perpiacere mi potrebbe dire come funziona, o dare il pseucodice? almeno da averne una idea su come implementarlo.

Grazie mille.
giack83 è offline   Rispondi citando il messaggio o parte di esso
Old 30-03-2006, 15:11   #2
pbg4
Member
 
Iscritto dal: Jul 2005
Messaggi: 131
Io userei uno SPath usando un approccio Dijkstra.
Ti metto il codice, vedi se puoi prendere spunto per fare quello che ti serve. Ciao


#include <stdio.h>

#include <stdlib.h>

#define TRUE 1

#define FALSE 0



typedef int bool;



/* grafo non etichettato */



#include "grafo.h" /* implementazione mediante liste di adiacenza */

typedef int itemType; /* code di interi */

#include "queue.h"





define N 25 /* N: numero dei nodi del grafo */



int dist[N]; /* array delle distanze */

int ST[N]; /* albero dei cammini */





void ShortestPaths(TipoGrafo g, int NumNodi, int nodo_iniz, void visita(int))

{

int i, j;

queue nodi_da_visitare;

bool visitati[NumNodi];





/* inizializzazione */

for (i = 0; i < NumNodi; i++) {visitati[i] = 0; dist[i]=0; ST[i]=i;}





nodi_da_visitare=initQueue(NumNodi*NumNodi);

enqueue(nodi_da_visitare, nodo_iniz);



/* cicla finche' ci sono nodi da visitare */

while (!emptyQueue(nodi_da_visitare)) {

/* prendi il prossimo nodo i da visitare */

i=dequeue(nodi_da_visitare);



/* analizza il nodo i e lo pone tra i nodi visti */

if (!visitati[i]) {



struct edge *ptr; /* implementazione esplicita */



visita(i);

visitati[i] = 1;



/* aggiunge i successori non visitati del nodo i ai nodi da visitare */

ptr=g[i];

while (ptr!=NULL){

if (!visitati[ptr->v]){

enqueue(nodi_da_visitare, ptr->v);

ST[ptr->v]=i;

dist[ptr->v]=dist[i]+1;

}

ptr=ptr->next;

} /* end-while */

} /* end-if */

} /* end-while */

} /* VisitaInAmpiezza-ST */







void StampaPath(int s, int t) {

if (s==t) printf("%d ", s);

else if (ST[t]==t) printf("Nessun cammino tra %d e %d", s,t);

else {

StampaPath(s,ST[t]);

printf("%d ", t);

}

}







/******* grafi etichettati *************/









typedef char *TipoEticNodo;

typedef unsigned float TipoEticArco;





struct arcoEtic {

int v;

TipoEticArco etic;

struct arcoEtic *next;

};





struct nodoEtic {

TipoEticNodo etic;

struct arcoEtic *next;

};



typedef struct nodoEtic *TipoGrafoEtic;







#include "pqueue.h" /* itemType gia' definito come int */



/* def. funzione di confronto */

int DistCmp(int i, int j){

/* distanze minori dalla sorgente hanno priorit‡ maggiore */

return (dist[i]<dist[j])? 1: ((dist[i]==dist[j])? 0: -1);

}







void RipristinaUp(pqueue pq, int v, int cmp(itemType, itemType)){

/* v e' il vertice. E' aumentata la priorita' */



int temp, k;

k=pq->top[pq->cnt-1];

while (pq->top[k]!=v) k--;

fixUp(pq, k, cmp);

}




void Dijkstra_like(TipoGrafoEtic g, int NumNodi, int nodo_iniz) {

/* shortest paths: approccio Dijkstra */



int i, j;

pqueue pq; /* coda di priorit‡ sugli interi */

bool visitati[NumNodi];



/* inizializzazione */

for (i = 0; i < NumNodi; i++){

visitati[i] = FALSE;

ST[i]=i;

dist[i]=0;

}

pq = initPQ(NumNodi*NumNodi); /* impl. heap */





insertPQ(pq, nodo_iniz, DistCmp);

while (!emptyPQ(pq)) {

i=delMax(pq, DistCmp); /* il vertice i e' quello di priorita' max */



if (!visitati[i]) {

struct arcoEtic *ptr=g[i].next;

visitati[i]=TRUE;



while (ptr!=NULL){

if (!visitati[ptr->v] && dist[ptr->v]==0){ /* adiacente non in pq */

ST[ptr->v]=i;

dist[ptr->v]=dist[i]+ptr->etic;

insertPQ(pq,ptr->v,DistCmp);

} else if (!visitati[ptr->v] && dist[ptr->v]>dist[i]+ptr->etic){

ST[ptr->v]=i;

dist[ptr->v]= dist[i]+ptr->etic;

RipristinaUp(pq,ptr->v, DistCmp);

}

ptr=ptr->next;

} /* end-while */

} /* end-if */

} /* end-while */

}
__________________
PowerBook G4 1,5, 60Gb Hd, 1,2 Gb DDR, mouse wireless by Apple, iPod nano black 4GB, laurea in informatica
GeForce Fx 5200 64mb
pbg4 è offline   Rispondi citando il messaggio o parte di esso
Old 01-04-2006, 20:03   #3
-Ivan-
Senior Member
 
L'Avatar di -Ivan-
 
Iscritto dal: Mar 2003
Città: Rimini
Messaggi: 1842
Quote:
Originariamente inviato da giack83
Salve a tutti,

devo implementare il problema del commesso viaggiatore in C; in poche parole date 1000 cordinate di citta, devo trovare il cammini (percorso) piu breve per passarle tutte.
Han detto di utilizzare l'algoritmo 2 OPT.
Cercando in google non ho trovato informazioni su esso, ci sarebbe qualcuno che perpiacere mi potrebbe dire come funziona, o dare il pseucodice? almeno da averne una idea su come implementarlo.

Grazie mille.
Non farai mica scienze dell'informazione a cesena?
Anche io devo farlo e sono messo un po' male per ora però ci sto lavorando su.
-Ivan- è offline   Rispondi citando il messaggio o parte di esso
Old 02-04-2006, 14:17   #4
pbg4
Member
 
Iscritto dal: Jul 2005
Messaggi: 131
No, sono laureato in informatica! In bocca al lupo per l'esame...
pbg4
__________________
PowerBook G4 1,5, 60Gb Hd, 1,2 Gb DDR, mouse wireless by Apple, iPod nano black 4GB, laurea in informatica
GeForce Fx 5200 64mb
pbg4 è offline   Rispondi citando il messaggio o parte di esso
Old 04-04-2006, 14:15   #5
giack83
Senior Member
 
Iscritto dal: Nov 2004
Messaggi: 862
Grazie per le risposte, si faccio scienze dell'informazione....

cmq devo per forza utilizzare l'algoritmo 2-OPT, qualcosa su esso avete?
anche un pseudocodice va bene, almeno da avere uno spunto.....
giack83 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione Sony Xperia 1 VII: lo smartphone per gli appassionati di fotografia Recensione Sony Xperia 1 VII: lo smartphone per ...
Attenti a Poco F7: può essere il best buy del 2025. Recensione Attenti a Poco F7: può essere il best buy...
Recensione Samsung Galaxy Z Fold7: un grande salto generazionale Recensione Samsung Galaxy Z Fold7: un grande sal...
The Edge of Fate è Destiny 2.5. E questo è un problema The Edge of Fate è Destiny 2.5. E questo ...
Ryzen Threadripper 9980X e 9970X alla prova: AMD Zen 5 al massimo livello Ryzen Threadripper 9980X e 9970X alla prova: AMD...
L'amministrazione Trump vorrebbe distrug...
La NASA vorrebbe realizzare un reattore ...
Oltre 1.700 km con una ricarica: l'assur...
Maxi annuncio dalla Casa Bianca: Apple p...
Microonde con grill, super venduto e app...
Pubblicazioni scientifiche false in aume...
Ecco le 100 startup che prenderanno part...
Pandora colpita da un attacco informatic...
Cooler Master MasterFrame 360 Panorama S...
Motorola e Swarovski lanciano The Brilli...
Wikipedia dichiara guerra all'IA spregiu...
Dai social ai farmaci dimagranti: il nuo...
Addio spam su WhatsApp? Ecco le nuove di...
Su Windows 11 25H2 cambierà (in p...
Per la prima volta un portatile gaming c...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 04:22.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v