2010-03-29 12 views
0

J'ai une zone plate avec des nœuds placés aléatoirement sur cette surface plane. J'ai besoin de techniques capables de prendre un point de départ, de bouger d'une certaine manière (l'algorithme), de trouver des nœuds et de continuer à chercher. Je n'ai pas une vue d'ensemble de la surface (c'est-à-dire je ne peux pas tout voir), seulement une vue limitée (c'est-à-dire 4 cellules dans n'importe quelle direction). Idéalement, ces méthodes seraient efficaces dans leur fonctionnement.Techniques de recherche/Algorithmes pour les ressources sur une zone donnée

Tous les points dans la bonne direction seraient grandement appréciés.

+0

Avec quelques petites hypothèses, ce problème réduit le problème de "peinture" de la surface. Comment êtes-vous autorisé à déménager? Sauter neuf cellules dans la direction X ou Y serait idéal. Si vous pouvez vous déplacer seulement comme un roi d'échecs, allez en diagonale (de façon à peindre 17 cellules au lieu de 9). Comment ça? – Beta

+0

Je suis autorisé à déplacer une cellule à la fois dans 8 directions différentes. Je serais capable de déplacer neuf cellules (en neuf étapes), mais est-ce le moyen le plus efficace d'explorer une zone? J'ai entendu parler d'une méthode où vous vous déplacez dans une spirale croissante, mais je cherche d'autres alternatives;) – Raydon

+0

Raydon, comprenez-vous ce que je voulais dire à propos de 17 au lieu de 9? Avez-vous pensé à la spirale? Avez-vous pensé à ce que signifie «efficace»? Avez-vous essayé d'attaquer le problème vous-même? – Beta

Répondre

0

La taille de la carte est-elle infinie ou connaissez-vous les dimensions, même si vous ignorez votre position de départ? Est-il préférable d'explorer votre position de départ, ou est-ce que le but est d'explorer le plus grand nombre de cellules en un minimum de temps?

Si vous voulez explorer votre quartier avec une carte infinie de 8 connexions et une visibilité à 4 cellules dans toutes les directions, faites simplement des spirales diagonales. Si la grille est finie, et que vous connaissez les dimensions, il est préférable d'aller dans la même direction jusqu'à ce que vous atteigniez un mur (ce qui révèlera votre position), afin que vous puissiez mieux planifier vos mouvements.

0

Utilisez une variante de flood fill - ajoutez simplement la vérification d'un nœud après le remplissage de chaque pixel.