Come si chiama questo Algorithm? [Problema del commesso viaggiatore]

2

Ho pensato al Problema del venditore ambulante . Nell'esaminarlo e nelle reti delle città, ho notato che potevo spesso scegliere il percorso più breve semplicemente fissandolo. Certo, non potevo necessariamente ottenere le soluzioni per le griglie complesse, ma se potessi ottenere quelle semplici ci doveva essere un modo per risolverle in modo coerente.

Mi sono reso conto che la maggior parte (tutti quelli che ho visto) hanno un percorso circolare intorno alle città, seguono un po 'un confine esterno. La mia idea era di iniziare con un algoritmo che segni i punti più esterni di una griglia sul maggior numero di lati possibile. Che è sempre almeno 4 (a meno che tu non abbia meno di 4) una città per ogni direzione cardinale. Qualcosa del genere:

(Dato, sono solo umano quindi ho per lo più indovinato quali città sarebbero state scelte. È possibile che l'algoritmo iniziale abbia scelto in modo diverso o scelto più di 4. Allo scopo di esempi però ...)

Quindil'algoritmotrovaunaltroinsiemedeipuntipiùesterni,esclusiipuntiprecedentementetrovati.Corrispondeaquestipunticonlalinearossapiùvicinaesiinseriscelì.

loripetefinoaquandotuttiipuntisonostatiselezionatieuniti.

Questo sembra funzionare abbastanza bene per le selezioni più semplici di città più piccole. Se non cade a pezzi per modelli più grandi e più complessi è ancora sconosciuto. Sospetto che si possa creare una città che rompe questo.

Comunque, sono per lo più curioso di sapere come si chiamerà questo algoritmo. Lo trovo affascinante e mi piacerebbe saperne di più.

Questa è davvero una soluzione al problema, o solo una stretta approssimazione?

    
posta Ucenna 14.10.2016 - 20:51
fonte

1 risposta

2

Quello che stai facendo è creare uno scafo convesso. Il tuo algoritmo non sarà una soluzione perfetta, solo un'approssimazione. Considera la seguente griglia:

Iltuoalgoritmoinizieràfacendoqualcosadisimileaquesto:

Quindilecosediventanopiùcomplicate,iltuoalgoritmofarebbeunadelleseguentiscelteasecondadicomeècodificato:

Solo uno di questi è corretto. In teoria il tuo algoritmo potrebbe funzionare, ma prima avrebbe bisogno di più smalto. Avresti bisogno di una logica per aiutare a decidere come le città interne si collegano con le città esterne. Ci sono alcuni metodi, potresti usare l'algoritmo ingordo, ma questo è inaccurato nella maggior parte delle situazioni come sarebbe in questo. In alternativa, è applicabile il metodo della forza bruta. Ci sono molte meno permutazioni da considerare questa volta, poiché non si collegano tutte le combinazioni di città. Tieni presente che dovresti considerare la distanza di OuterCity- > InnerCity- > OuterCity e non solo la distanza tra OuterCity- > InnerCity.

    
risposta data 15.10.2016 - 19:52
fonte

Leggi altre domande sui tag