Algoritmo breadth first search con vba

di Anonimizzato8578 il
2 risposte
Dovrei risolvere un problema abbastanza ostico con excel, con il vba o con pascal.
Il mio obiettivo è quello di trovare tutti i percorsi possibili tra nodi, sapendo che ci sono alcune "strade" percorribili. Cioe, ad esempio se voglio trovare i percorsi che collegano il nodo 1 con il nodo 4 e sapendo che le strade consentite sono (1,2) (1,3) (2,3) (2,4) (3,4) i percorsi possibili sono
1 3 4
1 2 4
1 2 3 4
1 3 2 4
le strade sono bidirezionali e ogni strada e lunga alcuni metri indicati nel problema. Oltre ai percorsi perciò bisogna dire la misura di ogni percorso.
Quello che mi è venuto in mente è una sequenza di cicli for per realizzarli tutti, in questo esempio (1111 1112 1113 1114 1211 ecc), con la forza bruta, ma ci sono almeno due problemi.
1) esso trova i percorsi usando n-1 strade per n nodi. Cioe non tenta questo tipo di percorso 111 112 113 114 121 122 123 124 ecc
2) aumentando il numero di strade e di nodi il programma impazzirebbe.

Una volta trovate le combinazioni bisogna stabilire quelle che vanno bene, cioè verificare se ogni percorso é fattibile, vedendo se esiste ogni collegamento del percorso. Ad esempio 1 1 1 1 non va bene perchè (1,1) non esiste.

Qualcuno mi può aiutare?? Grazie

2 Risposte

  • Ciao.
    Mi sembra che non sia tanto il problema di quale linguaggio usare, ma quello di trovare un algoritmo specifico, finito, mirato alla risoluzione del tuo problema...
    Insomma, se hai o trovi un algoritmo che risolva la cosa, poi, o VB o Pascal o altro, non ci sono problemi ad implementarlo.
    Tu hai il diagramma di questo algoritmo o comunque la descrizione dei passi che dovrebbe eseguire...?!
    e poi sai bene che la politica del Forum NON è quella di sfornare soluzioni chiavi in mano, dovresti almeno 'contribuire' con una idea di partenza di codice...
    Saluti e buon 2012.
  • Sisi anche perchè sarebbe bruttissimo avere un programma bello e pronto. Non c'è soddisfazione. Comunque per l'algoritmo ho visto su diverse guide, e parlano di partire da un grafo con un nodo di partenza e visitare tutti i nodi adiacenti. Da ogni nodo adiacente visitare tutti i nodi adiacenti e cosi via fino ad arrivare al nodo desiderato. Una volta arrivato li si ritorna al nodo di partenza e si prendono altre strade.
    Buon 2012 anche a voi!!
Devi accedere o registrarti per scrivere nel forum
2 risposte