Algoritmo breadth first search con vba

di il
2 risposte

Algoritmo breadth first search con vba

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

  • Re: Algoritmo breadth first search con vba

    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.
  • Re: Algoritmo breadth first search con vba

    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