Minimale Schnittmengen zwischen begrenzten Teilgraphen finden

9

Wenn eine Spielkarte in Untergraphen partitioniert wird, wie kann man Kanten zwischen Untergraphen minimieren?

Ich habe ein Problem. Ich versuche, A * durch ein Grid-basiertes Spiel wie Pacman oder Sokoban zu durchsuchen, aber ich muss "Gehege" finden. Was meine ich mit Gehäusen? Untergraphen mit so wenig Schnittkanten wie möglich, wenn eine maximale Größe und eine minimale Größe für die Anzahl der Stützpunkte für jeden Untergraphen gegeben sind agieren als weiche Constraints.
Alternativ könnte man sagen, ich suche nach Brücken zwischen Subgraphen, aber es ist im Allgemeinen das gleiche Problem.

Beispiel

Gridbasiertes Gamemap-Beispiel http://dl.dropbox.com/u/1029671/map1.jpg

Bei einem Spiel, das so aussieht, möchte ich Gehege finden, damit ich Eingänge zu ihnen finden kann und somit eine gute Heuristik für das Erreichen von Scheitelpunkten innerhalb dieser Gehege erhalten.

alt text http://dl.dropbox.com/u/1029671/map.jpg

Also ich möchte diese farbigen Regionen auf jeder beliebigen Karte finden.

Meine Motivation

Der Grund für mich, dies zu tun und nicht nur mit der Leistung einer einfachen Manhattan-Distanz-Heuristik zufrieden zu sein, ist, dass eine Gehäuse-Heuristik bessere Ergebnisse liefern kann und ich nicht wirklich das A * machen müsste, um etwas richtig zu bekommen Entfernungsberechnungen und auch für das spätere Hinzufügen von kompetitivem Blockieren von Gegnern in diesen Gehäusen, wenn Spiele vom Sokoban-Typ gespielt werden. Auch die Gehäuse-Heuristik kann für einen Minimax-Ansatz verwendet werden, um Zielscheitelpunkte richtiger zu finden.

Mögliche Lösung

Eine mögliche Lösung für das Problem ist der Kernighan Lin Algorithmus :

%Vor%

Mein Problem mit diesem Algorithmus ist seine Laufzeit bei O (n ^ 2 * lg (n)), ich denke daran, die Knoten in A1 und B1 an den Rand jedes Untergraphen zu begrenzen, um den Arbeitsaufwand zu reduzieren.

Ich verstehe auch nicht die c [a] [b] -Kosten im Algorithmus, wenn a und b keine Kante zwischen ihnen haben, sind die angenommenen Kosten 0 oder unendlich, oder sollte ich eine Kante basierend auf einigen erstellen Heuristik.

Weißt du, was c [a] [b] sein soll, wenn es keine Kante zwischen a und b gibt? Denkst du, dass mein Problem geeignet ist, eine Multi-Level-Methode zu verwenden? Warum oder warum nicht? Haben Sie eine gute Idee, wie Sie die Arbeit mit dem Kernighan-Lin-Algorithmus für mein Problem reduzieren können?

    
Tore 06.04.2010, 10:04
quelle

2 Antworten

1

Die Frage ist nicht sicher, aber vielleicht können Sie die Max-Flow / Min-Cut-Dualität verwenden.

Es gibt spezialisierte und effiziente Algorithmen für den max-flow , mit denen Sie das ursprüngliche Problem lösen können.

Sie müssen dann die duale Lösung mit der hier beschriebenen Methode hier .

PS: lassen Sie es mich wissen, wenn Sie Hilfe bei Operations Research Jargon benötigen.

    
baol 09.04.2010 01:08
quelle
0

Vielleicht werfen Sie einen Blick auf diesen Link auf Wikipedia für weitere Lektüre.

  

Das Graphpartitionierungsproblem in   Die Mathematik besteht darin, a zu teilen   Graph in Stücke, so dass die   Stücke sind von etwa gleicher Größe und   Es gibt wenige Verbindungen zwischen den   Stücke.

Graph Partition

    
ziggystar 06.04.2010 14:59
quelle