Ich arbeite daran, einen triangulierten Graphen in verbundene Untergraphen zu unterteilen, mit einigen Garantien für die Anzahl der Kanten zwischen den Partitionen. Hier ist ein Beispiel eines triangulierten Graphen, der in 4 "Cluster" unterteilt wurde:
Was ich ursprünglich wollte, war ein Algorithmus, der Partitionen von ungefähr k Dreiecken erstellen konnte (es könnte einen Fehler geben, solange er nicht zu groß war), und ich schaffte es, ein herauszufinden. Algorithmus (wobei p die Gesamtzahl der Partitionen ist), der eine solche Partitionierung finden könnte. Dann wurde mir klar, dass eine große Anzahl von Kanten zwischen Partitionen für die Anwendung, für die ich diesen Algorithmus benötigte, nachteilig war.
Idealerweise möchte ich einen Algorithmus, der jede Partition in einem Bereich von , idealerweise einen konstanten Faktor wie 2. Außerdem möchte ich in der Lage sein, die Anzahl der Zwischenkanten mit einer Obergrenze zu versehen das ist "niedrig".
Ein weiteres Problem besteht darin, dass ich eine Partition mit diesen Eigenschaften habe und das Diagramm durch eine der folgenden Aktionen ändere:
- Hinzufügen einer Reihe von Kanten, die mit vorhandenen Scheitelpunkten verbunden sind
- Hinzufügen eines Scheitelpunkts und einer Reihe von Kanten, die mit dem hinzugefügten Scheitelpunkt verbunden sind
- Entfernen einer Reihe von Kanten
- Entfernen eines Scheitelpunkts und aller Kanten, die mit diesem Scheitelpunkt verbunden sind
Ich möchte in der Lage sein, das Diagramm neu zu partitionieren und trotzdem jede Partition mit der Größe und der Anzahl der Schnittkanten zu minimieren. (Dies ist die Lösung, für die ich ein Kopfgeld aufbringe). Dies bedeutet, dass wir mit diesem Algorithmus jede Partition erstellen können, indem wir mit einem leeren Diagramm beginnen und nacheinander Scheitelpunkte und Kanten hinzufügen und neu partitionieren.
Hier sind einige zusätzliche Einschränkungen für das Problem:
- Der Graph ist planar
- Jedes "Dreieck" ist ein Scheitelpunkt mit ungerichteten Kanten zu Dreiecken, mit denen es eine Kante teilt
- Aus der obigen Aussage ist ersichtlich, dass jeder Scheitelpunkt in diesem Diagramm höchstens einen Grad 3 hat
- Der Graph ist verbunden
- Jeder Untergraph von der Partition ist verbunden
- Jeder Untergraph hat ungefähr k Eckpunkte
- Es gibt höchstens Interpartitionskanten (Kanten, die Scheitelpunkte von verschiedenen Partitionen enthalten). Wenn Sie eine ähnliche Grenze für Kanten zwischen Partitionen wie oder , könnte dies auch funktionieren. Ich bin mir nicht ganz sicher, ob die Obergrenze für Kanten zwischen Partitionen kleiner als kann. Wenn Sie also beweisen können, dass es unmöglich ist, bessere Ergebnisse zu erzielen, ist dies ebenfalls zufriedenstellend. 2 √ O(logn)O(n)
Ich bin an einem Punkt angelangt, an dem ich feststecke, daher wäre jede Hilfe bei diesem Problem sehr hilfreich. Wenn Sie dieses Problem mit aller Kraft lösen können, sind Sie die Bienenknie. Andernfalls würde ich es sehr schätzen, wenn Sie Papiere, Lehrbücher oder Algorithmen kennen, auf die Sie mich hinweisen könnten.
Lassen Sie mich wissen, wenn ich etwas klären muss!
BEARBEITEN: Hier sind einige zusätzliche Einschränkungen, wenn dies das Problem erleichtert.
- Wir haben es mit eingeschränkten Delaunay-Triangulationen zu tun
- Einschränkungen werden NIEMALS ein einzelner Scheitelpunkt sein
- Der aus der Triangulation erstellte Graph ist wie folgt aufgebaut: Jedes Dreieck wird als Scheitelpunkt dargestellt. Jede Kante im Diagramm entspricht einer nicht eingeschränkten Kante in der Triangulation. Dies bedeutet, dass eine eingeschränkte Kante zwischen zwei Dreiecken in der Diagrammdarstellung der Triangulation nicht angezeigt wird.
Eine andere Sache, die mir klar wurde, ist, dass wir möglicherweise modifizieren müssen, um zu wachsen, wenn wächst, andernfalls kann es keine Sub- -Garantien für die Anzahl der Kanten zwischen Partitionen geben.n O ( n )