Sto cercando di generare in modo casuale un grafico diretto allo scopo di creare un gioco simile ai puzzle scorrevoli sul ghiaccio di Pokemon.
Questo è essenzialmente ciò che voglio essere in grado di generare in modo casuale: http://bulbanews.bulbagarden.net/wiki/Crunching_the_numbers:_Graph_theory .
Devo essere in grado di limitare la dimensione del grafico in una dimensione xey. Nell'esempio fornito nel collegamento, sarebbe limitato a una griglia 8x4.
Il problema che sto incontrando non è la generazione casuale del grafico, ma la generazione casuale di un grafico, che posso mappare correttamente in uno spazio 2d, poiché ho bisogno di qualcosa (come una roccia) sul lato opposto di un nodo, per farlo ha senso visivamente quando smetti di scivolare. Il problema è che a volte la roccia finisce nel percorso tra altri due nodi o eventualmente su un altro nodo stesso, causando la rottura dell'intero grafico.
Dopo aver discusso del problema con alcune persone che conosco, siamo giunti a un paio di conclusioni che potrebbero portare a una soluzione.
- Compresi gli ostacoli nella griglia come parte del grafico durante la costruzione.
- Inizia con una griglia completamente riempita e disegna semplicemente un percorso casuale ed elimina i blocchi che faranno funzionare quel percorso.
Il problema diventa quindi capire quali eliminare per evitare di introdurre un percorso aggiuntivo e più breve. Pensavamo anche che un algoritmo di programmazione dinamica potesse essere utile, anche se nessuno di noi è troppo abile nel creare algoritmi di programmazione dinamica dal nulla. Qualsiasi idea o riferimento su ciò che viene chiamato ufficialmente questo problema (se si tratta di un problema grafico ufficiale) sarebbe di grande aiuto.
Ecco alcuni esempi di ciò che ho realizzato finora posizionando casualmente blocchi e generando il grafico di navigazione dall'inizio / della fine scelti. L'idea (come descritto nel link precedente) è di iniziare dalla S verde e si desidera arrivare alla F. verde. Lo si fa spostandosi su / giù / a sinistra / a destra e si continua a muoversi nella direzione scelta fino a quando si preme un parete. In queste immagini, il grigio è un muro, il bianco è il pavimento e la linea viola è la lunghezza minima dall'inizio alla fine, e le linee nere e i punti grigi rappresentano possibili percorsi.
Ecco alcuni esempi errati di grafici generati casualmente:
Ecco alcuni buoni esempi di grafici generati casualmente (o modificati a mano):
Ho anche notato che quelli più impegnativi quando si gioca a questo puzzle sono quelli che hanno molti nodi di alto grado lungo il percorso minimo.