Ograniczenia globalne

Pamiętaj, że ograniczenie globalne to takie, które obejmuje dowolną liczbę zmiennych (ale niekoniecznie wszystkie zmienne). Ograniczenia globalne występują często w rzeczywistych problemach i mogą być obsługiwane przez algorytmy specjalnego przeznaczenia, które są bardziej wydajne niż metody ogólnego przeznaczenia opisane do tej pory. Na przykład, ograniczenie Alldiff mówi, że wszystkie zaangażowane zmienne muszą mieć różne wartości (jak w problemie kryptarytmetycznym powyżej i łamigłówce Sudoku poniżej). Jedna prosta forma wykrywania niespójności dla ograniczeń Alldiff działa w następujący sposób: jeśli m zmiennych jest zaangażowanych w ograniczenie i jeśli mają łącznie n możliwych odrębnych wartości, a m > n , to ograniczenie nie może być spełnione. Prowadzi to do następującego prostego algorytmu: Najpierw usuń dowolną zmienną z ograniczenia, która ma domenę singletona i usuń wartość tej zmiennej z domen pozostałych zmiennych. Powtarzaj, dopóki istnieją zmienne singletonowe. Jeśli w dowolnym momencie zostanie utworzona pusta domena lub pozostało więcej zmiennych niż wartości domeny, oznacza to, że wykryto niespójność.

Ta metoda może wykryć niespójność w przypisaniu {WA = red, NSW = red} . Zauważ, że zmienne SA, NT i Q są skutecznie połączone przez ograniczenie Alldiff, ponieważ każda para musi mieć dwa różne kolory. Po zastosowaniu AC-3 z częściowym przypisaniem, wszystkie domeny SA , NT i Q są zredukowane do {green, blue} .

Oznacza to, że mamy trzy zmienne i tylko dwa kolory, więc naruszone jest ograniczenie Alldiff. Tak więc prosta procedura spójności dla ograniczenia wyższego rzędu jest czasami bardziej skuteczna niż zastosowanie spójności łuku do równoważnego zestawu ograniczeń binarnych.

Innym ważnym ograniczeniem wyższego rzędu jest ograniczenie zasobów, czasami nazywane ograniczeniem Atmost. Na przykład, w zadaniu harmonogramowania, niech {P1…P4} oznaczają liczbę personelu przydzielonego do każdego z czterech zadań. Ograniczenie, że nie więcej niż 10 pracowników jest przypisanych w sumie, jest zapisane jako Atmost(10,P1,P2,P3,P4). Możemy wykryć niespójność po prostu sprawdzając sumę minimalnych wartości obecnych domen; na przykład, jeśli każda zmienna ma domenę {3,4,5,6} , ograniczenie Atmost nie może być spełnione. Możemy również wymusić spójność, usuwając maksymalną wartość dowolnej domeny, jeśli nie jest ona zgodna z minimalnymi wartościami innych domen. Zatem jeśli każda zmienna w naszym przykładzie ma domenę {2,3,4,5,6} , wartości 5 i 6 można usunąć z każdej domeny.

W przypadku dużych, ograniczonych zasobów problemów z wartościami całkowitymi — takich jak problemy logistyczne związane z przemieszczaniem tysięcy ludzi w setkach pojazdów — zwykle nie jest możliwe przedstawienie dziedziny każdej zmiennej jako dużego zestawu liczb całkowitych i stopniowe zmniejszanie tego zestawu przez spójność. metody sprawdzania. Zamiast tego domeny są reprezentowane przez górną i dolną granicę i są zarządzane przez propagację granic. Na przykład w problemie z rozkładem lotów załóżmy, że są dwa loty F1 i F2, dla których samoloty mają pojemności odpowiednio 165 i 385. Początkowe domeny dla liczby pasażerów w lotach i F2 to:

Załóżmy teraz, że mamy dodatkowe ograniczenie polegające na tym, że oba loty razem muszą przewozić 420 osób: . Propagując ograniczenia granic, redukujemy domeny do

Mówimy, że CSP jest spójny z granicami, jeśli dla każdej zmiennej X oraz dla wartości dolnej i górnej granicy X istnieje pewna wartość Y, która spełnia ograniczenia między X i Y dla każdej zmiennej. Ten rodzaj propagacji granic jest szeroko stosowany w praktycznych problemach z ograniczeniami.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *