2016-04-05 16 views
0

Stellen Sie sich vor, wir haben zwei Gruppen, Frauen und Männer. Jede Frau hat eine Gruppe von Männern, die sie interessiert. Wir vertreten ihr Interesse als Kanten in einem zweiteiligen Graphen.Bipartite Sitzordnung auf runden Tischen

Jetzt versuchen wir, alle in runden Tischen einzurichten, zum Beispiel, wenn Sie um den Tisch herumgehen, wird jeder Platz zwei Sitze von einem Paar mit einer Verbindung besetzt werden. Wenn Sie zum Beispiel im Uhrzeigersinn um den Tisch herumgehen, könnte ein Sitz eine Frau haben, die an einem Mann interessiert ist, der auf dem nächsten Sitzplatz sitzt, und das wird auch das Interesse der Frau sein, die auf dem nächsten Sitz sitzt, und so her. Jeder Tisch muss mindestens eine Anzahl k Gäste haben.

Ich versuche, einen Algorithmus mit max Fluss zu entwerfen, diese Anforderungen zu erfüllen, und ich würde wirklich einige Ideen

+0

Es ist unklar, was die tatsächlichen Einschränkungen hier sind. * Müssen * die beiden Sitze neben einem Frauensitz von Männern besetzt sein, die sie mag? Wenn ja, was passiert, wenn eine Frau nur einen oder keinen Mann mag? Was passiert, wenn 2 Frauen nur die gleichen 2 Männer mögen, aber k> = 5 bedeutet, dass diese 2 Männer nicht neben beiden Frauen sitzen können? –

Antwort

2

Dieses Problem schätzen, ist im Allgemeinen NP-hart. Stellen Sie sich vor, Sie haben ein Diagramm mit 2n Knoten und Sie haben nur eine Tabelle der Größe 2n. Nun, es gibt eine Möglichkeit, alle um den Tisch herum so zu platzieren, wie Sie es möchten, wenn und nur wenn der Graph einen Hamilton-Zyklus hat. Da das Hamilton-Zyklus-Problem bei bipartiten Graphen NP-hart ist, ist Ihr Problem auch NP-schwer. Daher bezweifle ich, dass es eine gute Möglichkeit gibt, Max-Flow zu verwenden, um dieses spezielle Problem zu lösen, es sei denn, Sie erstellen einen exponentiell großen Graphen.

+0

Hätte es eine Lösung, wenn wir Frauen und Männer hätten? – entangledgravitationalcollapse

+1

Sie können keinen Hamitlonian-Zyklus in einem bipartiten Graphen haben, es sei denn, die zwei Klassen haben die gleiche Anzahl oder Knoten. Siehst du warum? – templatetypedef