Problem opisany jako edge-coloring problem: masz wykres, w którym każda pozycja krotki jest węzłem, a krawędzie są podawane przez krotki. Grupowanie krotek w grupy odpowiada zatem znajdowaniu grup krawędzi, które nie współdzielą punktów końcowych (dopasowań), którym można przypisać ten sam kolor przy kolorowaniu krawędzi. Innymi słowy, każde zabarwienie krawędzi daje skupienie, a każde grupowanie daje kolorystykę krawędzi. Niestety, jest to NP - trudno znaleźć najlepszą kolorystykę krawędzi, więc Twoim problemem jest ogólnie NP -hard. Istnieją algorytmy aproksymacyjne dla tego problemu, które dają przybliżenia w postaci stałego współczynnika, ale chyba że nie ma dokładnego algorytmu.
Jeśli uogólnisz ten problem, aby pozwolić na dowolną liczbę elementów na krotkę, wtedy problem ten staje się o wiele trudniejszy. Ogólną wersją tego problemu jest rzeczywiście NP - trudne i bardzo trudne do przybliżenia, poprzez zmniejszenie kolorystyki wykresu. Pokażę przykład redukcji w konkretnej sprawie, ale generalizuje ona całkiem ładnie.
Biorąc pod uwagę wykres podobny do tego:
A -- B -- C
| | |
D -- E -- F
Będziemy tworzyć zbiór krotek, po jednej dla każdego węzła, gdzie każdy wpis w krotka jest zbiorem krawędzi przyległych do tego węzła. Na przykład, w powyższym wykresie, chcemy tworzyć te krotki:
(AB, AD)
(AB, BC, BE)
(CB, CF)
(AD, DE)
(BE, DE, EF)
(CF, EF)
Teraz wyobraź sobie, że dwa z tych krotek nie pokrywają się. Oznacza to, że dwa węzły odpowiadające tym krotkom nie mogą przylegać, ponieważ gdyby były, krawędź między nimi byłaby wspólnym elementem w krotkach, a zatem nie mogłyby być skupione. Z drugiej strony, jeśli dwa węzły nie sąsiadują ze sobą, wówczas ich krotki mogą być zgrupowane w tym samym skupisku, ponieważ w drugiej nie będzie widoczna krawędź w jednej krotce.
Biorąc pod uwagę tę konfigurację, dowolna kolorystyka oryginalnego wykresu daje sposób grupowania krotek (wszystkie krotki dla węzłów o tym samym kolorze w tym samym zestawie, żadne z nich nie sąsiadują ze sobą, więc nie powodują konfliktu), i dowolny sposób grupowania krotek daje kolorowanie (kolor wszystkie węzły odpowiadające każdej krotce w klastrze tego samego koloru). Dlatego znalezienie minimalnej liczby klastrów odpowiada znalezieniu liczby chromatycznej oryginalnego wykresu, która jest NP - trudna i nieznana, aby przyjąć jakiekolwiek algorytmy aproksymacyjne, które uzyskałyby wartość zbliżoną do rzeczywistej.
Czy możesz opublikować dłuższy przykład lub podać rozmiar rzeczywistego wejścia? Czy mogą istnieć zduplikowane krotki? Czy oczekujesz, że każdy element pojawi się mniej więcej tyle samo razy? – m69
Rozmiar wejścia mieści się w przedziale 20-60 (pary).Nie ma powtarzających się krotek, tj. Jeśli (A, B) jest w zbiorze, nie ma innych (A, B) lub (B, A). Nie posiadam żadnej wiedzy dystrybucyjnej na temat poszczególnych elementów (choć w praktyce podejrzewam, że niektóre elementy pojawiają się częściej niż inne, nie wiem, że tak jest w przypadku problemu - jeśli jest jakaś probabilistyczna wiedza na temat problemu daje lepsze średnie rozwiązanie problemu, daj mi znać, a ja mogę spróbować go dostarczyć). –
Z grubsza, ile różnych liter (lub cokolwiek one reprezentują) ma dane wejściowe? Czy próbowałeś [przybliżenie minimalnego rozmiaru wierzchołka] (https://pl.wikipedia.org/wiki/Vertex_cover#Approximate_evaluation) swoich wykresów i ich [grafów dopełniających] (https: //en.wikipedia. org/wiki/Complement_graph)? Czy próbowałeś [przybliżając szerokość drzewa] (http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.29.7198&rep=rep1&type=pdf) swoich wykresów? –