Porządkowanie zmiennych i wartości

Algorytm cofania zawiera linię. Najprostszą strategią dla SELECT-UNASSIGNED-VARIABLE jest porządkowanie statyczne: wybierz zmienne w kolejności {X1,X2,…}. Następnym najprostszym jest wybór losowy. Żadna strategia nie jest optymalna. Na przykład po przypisaniu WA =red i NT = green na rysunku 6.6 istnieje tylko jedna możliwa wartość dla SA , więc sensowne jest przypisanie SA = blue zamiast przypisywania Q. W rzeczywistości, po przypisaniu SA, wszystkie wybory Q, NSW i Vare są wymuszone. Ten intuicyjny pomysł – wybór zmiennej o najmniejszej „legalnej” wartości – nazywa się heurystyką minimalnych pozostałych wartości (MRV). Została również nazwana „najbardziej ograniczoną zmienną” lub heurystyką „najpierw błąd”, ponieważ wybiera zmienną, która najprawdopodobniej wkrótce spowoduje awarię, tym samym przycinając drzewo wyszukiwania. Jeśli jakaś zmienna X nie ma żadnych legalnych wartości, heurystyka MRV wybierze X, a niepowodzenie zostanie natychmiast wykryte, unikając bezcelowych przeszukiwań innych zmiennych. Heurystyka MRV zwykle działa lepiej niż losowe lub statyczne porządkowanie, czasami o rzędy wielkości, chociaż wyniki różnią się w zależności od problemu. Heurystyka MRV w ogóle nie pomaga w wyborze pierwszego regionu do pokolorowania w Australii, ponieważ początkowo każdy region ma trzy legalne kolory. W takim przypadku przydaje się heurystyka stopni. Próbuje zredukować czynnik rozgałęzienia w przyszłych wyborach, wybierając zmienną, która jest zaangażowana w największą liczbę ograniczeń dla innych nieprzypisanych zmiennych. Na wykresie 6.1 SA jest zmienną o najwyższym stopniu, 5; pozostałe zmienne mają stopień 2 lub 3, z wyjątkiem , który ma stopień 0. W rzeczywistości SA raz wybiera się, stosując stopień heurystyki rozwiązuje problem bez żadnych fałszywych kroków — możesz wybrać dowolny spójny kolor w każdym punkcie wyboru i nadal znaleźć rozwiązanie bez cofania się. Heurystyka minimalnych pozostałych wartości jest zwykle potężniejszą wskazówką, ale heurystyka stopnia może być użyteczna jako rozwiązanie rozstrzygające remisy.

Po wybraniu zmiennej algorytm musi zdecydować o kolejności sprawdzania jej wartości. W tym przypadku skuteczna jest heurystyka o najmniejszej wartości ograniczającej. Preferuje wartość, która wyklucza najmniej możliwości wyboru sąsiednich zmiennych na wykresie ograniczeń. Załóżmy na przykład, że na rysunku 6.1 wygenerowaliśmy częściowe przypisanie z WA=red i NT=green i że nasz następny wybór dotyczy . Niebieski byłby złym wyborem, ponieważ eliminuje ostatnią legalną wartość pozostawioną sąsiadowi Q, SA. Dlatego heurystyka z najmniejszą wartością ograniczającą preferuje kolor czerwony od niebieskiego. Ogólnie rzecz biorąc, heurystyka stara się pozostawić maksymalną elastyczność dla kolejnych przypisań zmiennych. Dlaczego wybór zmiennych miałby być pierwszym niepowodzeniem, a wybór wartości ostatnim niepowodzeniem? Każda zmienna musi być ostatecznie przypisana, więc wybierając te, które prawdopodobnie zawiodą w pierwszej kolejności, będziemy mieli średnio mniej udanych przypisań do cofnięcia się. W przypadku porządkowania wartości sztuczka polega na tym, że potrzebujemy tylko jednego rozwiązania; dlatego warto najpierw poszukać najbardziej prawdopodobnych wartości. Gdybyśmy chcieli wyliczyć wszystkie rozwiązania, a nie tylko je znaleźć, porządkowanie wartości byłoby nieistotne.

Dodaj komentarz

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