Ich bin gerade dabei, einen Breadth-First Graph-Suchalgorithmus zu erstellen, um die Londoner U-Bahn zu durchsuchen.Dynamische Queue zur effizienten Implementierung des Breadth-First-Algorithmus
Ich habe den Algorithmus herausgefunden, aber wie Sie vielleicht wissen, benötigt der Algorithmus eine Warteschlange ADS, um alle Kanten zu verfolgen, die gesucht werden müssen (in der richtigen Reihenfolge).
Ich habe über Effizienz Probleme mit der Verwaltung der Warteschlange und eine große oder sehr große Anzahl der eingereihten Elemente (Kanten) zu lesen.
Kann mir bitte jemand sagen, wie man eine Warteschlange basierend auf der Java ArrayList implementiert, die Kopf und Schwanz verfolgen kann und den Speicher effektiv verwaltet, während er wächst?
Alle Tipps/Hinweise sehr geschätzt!
Das erste, was ich fragen würde ist, haben Sie tatsächlich ein Problem - ist es Sie warten lassen? Die zweite ist, wenn Sie warten müssen, haben Sie gesampelt, um zu sehen, was es die meiste Zeit macht. Dieser FIFO könnte ein Problem sein, aber a priori, wahrscheinlich nicht. Genau wie ein Baseballstadion, sollten Sie in der Lage sein, 1 Knoten jede Mikrosekunde zu verarbeiten, also würde ich nicht denken, dass die Geschwindigkeit ein Problem wäre. –
Ich würde lieber eine spezielle Warteschlange verwenden, weil es besser wäre, meine Warteschlange ständig zu sortieren. Obwohl es nicht unbedingt notwendig ist, möchte ich nur mehr über Warteschlangen und deren Möglichkeiten erfahren. – Alex
Ich denke, ich verstehe nicht, warum Sie sortieren müssen, aber wie auch immer, @ Kims Antwort sieht gut aus. –