„Prawo rozdzielności w matematyce to prawo odnoszące się do operacji mnożenia i dodawania, wyrażone symbolicznie, to znaczy czynnik jednomianowy rozprowadzany lub oddzielnie stosowany do każdego składnika czynnika dwumianowego , co daje iloczyn " - Britannica
Jak widać z definicji, zastosowanie prawa rozdzielności do wyrażenia arytmetycznego zmniejsza liczbę operacji w nim zawartych. W mnożenia i dodawania w dwóch (jedno mnożenie i ). Uogólnienie prawa dystrybucji prowadzi do dużej rodziny szybkich algorytmów . Obejmuje to FFT i Viterbiego .
Wyjaśniono to w bardziej formalny sposób w poniższym przykładzie:
gdzie i są funkcjami o wartościach rzeczywistych, i (powiedzmy)
Tutaj „marginalizujemy” zmienne niezależne ( mi { aby uzyskać wynik. Kiedy obliczamy złożoność obliczeniową, widzimy, że dla każdej pary {2} } ^ terminy ze względu na tryplet w ocenie z każdym krokiem mającym jedno dodawanie i jedno mnożenie. Dlatego całkowita liczba potrzebnych obliczeń wynosi . Stąd asymptotyczna złożoność powyższej funkcji wynosi .
Jeśli zastosujemy prawo rozdzielności do RHS równania, otrzymamy:
to, że produkt gdzie i
Teraz, kiedy obliczamy złożoność obliczeniową, widzimy, że istnieją α i i istnieją mnożenia, gdy używamy oceniać . Dlatego całkowita liczba potrzebnych obliczeń to . Stąd asymptotyczna złożoność obliczania się do z . Pokazuje to na przykładzie, że zastosowanie prawa rozdzielności zmniejsza złożoność obliczeniową, co jest jedną z dobrych cech „szybkiego algorytmu”.
Historia
Niektóre problemy, do rozwiązania których wykorzystano prawo dystrybucji, można pogrupować w następujący sposób
1. Algorytmy dekodowania Algorytm podobny do GDL był używany przez Gallagera do dekodowania kodów kontroli parzystości o niskiej gęstości. Opierając się na pracy Gallagera, Tanner przedstawił wykres Tannera i przedstawił pracę Gallagera w formie przekazywania wiadomości. Wykres garbarzy pomógł również w wyjaśnieniu algorytmu Viterbiego .
2. Algorytm przód-tył Algorytm przód-tył pomógł jako algorytm śledzenia stanów w łańcuchu Markowa . I to również zostało użyte w algorytmie GDL jak ogólność
MPF lub marginalizacja funkcji produktu to ogólny problem obliczeniowy, który jako szczególny przypadek obejmuje wiele klasycznych problemów, takich jak obliczanie dyskretnej transformaty Hadamarda , dekodowanie kodu liniowego o maksymalnej wiarygodności w kanale bez pamięci i mnożenie łańcucha macierzy . Siła WKL polega na tym, że odnosi się ona do sytuacji, w których dodawanie i mnożenie są uogólnione. Semiring przemienny to dobre ramy do wyjaśnienia tego zachowania. Jest zdefiniowany na zbiorze z operatorami " " i " " gdzie ) i prawo .
Niech będą zmiennymi takimi, że jest zbiorem i . Tutaj . = i , niech , , , , p
Niech gdzie . funkcja gdzie półpierścieniem _ _ Również nazywane domenami lokalnymi _ _ _
Teraz globalne jądro jest zdefiniowane jako:
Definicja problemu MPF : Dla jednego lub więcej wskaźników , oblicz tabelę wartości - marginalizacja globalnego jądra , S ja jest funkcją zdefiniowana jako
Tutaj jest dopełnieniem w odniesieniu do i nazywa się funkcją celu godz { \ . Można zauważyć, że obliczenie funkcji celu w oczywisty sposób wymaga operacji. istnieją i mnożenia potrzebne do obliczenia funkcji celu . Algorytm GDL, który wyjaśniono w następnej sekcji, może zmniejszyć tę złożoność obliczeniową.
Poniżej przedstawiono przykład problemu MPF. p p być zmiennymi takimi, że i . i = . Podane funkcje wykorzystujące te zmienne to i i musimy obliczyć i zdefiniowane jako:
Tutaj domeny lokalne i lokalne jądra są zdefiniowane w następujący sposób:
domeny lokalne
jądra lokalne
gdzie jest celu i p_ jest
Rozważmy inny przykład, w którym i to funkcja o rzeczywistych wartościach. Teraz rozważymy problem MPF, w którym semiring przemienny jest zdefiniowany jako zbiór liczb rzeczywistych ze zwykłym dodawaniem i mnożeniem, a domeny lokalne i jądra lokalne są zdefiniowane następująco:
domeny lokalne
jądra lokalne
Teraz, ponieważ globalne jądro jest zdefiniowane jako produkt lokalnych jąder, tak jest
a funkcja celu w domenie lokalnej jest
To jest transformata Hadamarda funkcji . Widzimy więc, że obliczenie transformaty Hadamarda jest szczególnym przypadkiem problemu MPF. Można wykazać więcej przykładów, aby udowodnić, że problem MPF stanowi szczególne przypadki wielu klasycznych problemów, jak wyjaśniono powyżej, których szczegóły można znaleźć pod adresem
GDL: algorytm rozwiązywania problemu MPF
Jeśli uda się znaleźć związek między elementami danego zbioru to można rozwiązać problem MPF w oparciu o pojęcie propagacji przekonań które jest specjalnym zastosowaniem techniki „przekazywania wiadomości”. Wymagana relacja polega na tym, że dany zestaw domen lokalnych można zorganizować w drzewo połączeń . Innymi teoretyczne drzewo grafów z elementami jako drzewa , tak że dla dowolnych dwóch dowolnych wierzchołków powiedzmy } i gdzie i istnieje krawędź między tymi dwoma wierzchołkami, a następnie przecięcie odpowiednich etykiet, a mianowicie , jest podzbiorem etykiety na każdym wierzchołku na unikalnej ścieżce od do .
Na przykład,
Przykład 1: Rozważmy następujące dziewięć domen lokalnych:
Dla powyższego zestawu domen lokalnych można zorganizować je w drzewo połączeń, jak pokazano poniżej:
Podobnie Jeśli podany jest inny zestaw, taki jak poniższy
Przykład 2: rozważ następujące cztery domeny lokalne:
Wtedy zbudowanie drzewa tylko z tymi domenami lokalnymi nie jest możliwe, ponieważ ten zbiór wartości nie ma wspólnych domen, które można by umieścić pomiędzy dowolnymi dwiema wartościami powyższego zbioru. Jeśli jednak dodasz dwie fikcyjne domeny, jak pokazano poniżej, zorganizowanie zaktualizowanego zestawu w drzewo połączeń będzie również możliwe i łatwe.
5. , 6. ,
Podobnie dla tych zestawów domen, drzewo połączeń wygląda tak, jak pokazano poniżej:
Algorytm uogólnionego prawa dystrybucji (GDL).
Dane wejściowe: zestaw domen lokalnych. Wynik: Dla podanego zbioru dziedzin obliczana jest możliwa minimalna liczba operacji wymaganych do rozwiązania problemu. Tak więc, jeśli krawędzią w drzewie połączeń, to wiadomość od do to zbiór / tabela wartości podanych przez funkcję: : . Na wszystkie funkcje, tj. dla wszystkich drzewie , jako i kiedy dana wiadomość jest aktualizowana, jest zgodna z równaniem podanym poniżej.
=
gdzie oznacza, że jest sąsiednim wierzchołkiem do w drzewie.
Podobnie każdy wierzchołek ma stan, który jest zdefiniowany jako tabela zawierająca wartości z funkcji } jak komunikaty inicjują się na 1, stan definiuje się jako jądro lokalne ale za każdym razem zostaje zaktualizowany, jest zgodny z następującym równaniem:
Podstawowe działanie algorytmu
Dla danego zestawu domen lokalnych jako danych wejściowych sprawdzamy, czy możemy utworzyć drzewo połączeń, używając bezpośrednio zestawu lub dodając najpierw fikcyjne domeny do zestawu, a następnie tworząc drzewo połączeń, jeśli budowa węzła nie jest możliwa, wtedy wyjście algorytmu, że nie ma sposobu na zmniejszenie liczby kroków do obliczenia danego problemu z równaniem, ale kiedy mamy drzewo połączeń, algorytm będzie musiał zaplanować komunikaty i obliczyć stany, wykonując to, możemy wiedzieć, gdzie kroki można zmniejszyć, stąd zostanie to omówione poniżej.
Szeregowanie przekazywania wiadomości i obliczanie stanu
Istnieją dwa szczególne przypadki, o których będziemy tutaj mówić, a mianowicie pojedynczego wierzchołka , w którym funkcja celu jest obliczana tylko w jednym wierzchołku, drugi to problem wszystkich wierzchołków , w którym celem jest obliczenie funkcja celu we wszystkich wierzchołkach.
Zacznijmy od problemu pojedynczego wierzchołka , GDL zacznie od skierowania każdej krawędzi w kierunku . Tutaj wiadomości są wysyłane tylko w kierunku docelowego wierzchołka. Pamiętaj, że wszystkie kierowane wiadomości są wysyłane tylko raz. Wiadomości są rozpoczynane od węzłów liścia (gdzie stopień wynosi 1) i idą w górę w kierunku docelowego wierzchołka . Wiadomość wędruje z liści do rodziców a stamtąd do rodziców i tak dalej, aż dotrze do wierzchołka . Wierzchołek docelowy swój stan tylko wtedy, gdy otrzyma wszystkie wiadomości od wszystkich swoich sąsiadów Gdy mamy stan, mamy odpowiedź, a zatem algorytm się kończy.
Na przykład rozważmy drzewo połączeń zbudowane z zestawu domen lokalnych podanych powyżej, tj. Zestaw z przykładu 1. Teraz tabela planowania dla tych domen to (gdzie wierzchołek docelowy to } .
Zatem złożoność GDL z pojedynczym wierzchołkiem można przedstawić jako
operacje arytmetyczne Gdzie (Uwaga: wyjaśnienie powyższego równania jest wyjaśnione w dalszej części artykułu) to etykieta . to stopień ( tj. liczba wierzchołków przylegających do v)
Aby rozwiązać problem wszystkich wierzchołków , możemy zaplanować GDL na kilka sposobów, niektóre z nich to implementacja równoległa, w której w każdej rundzie każdy stan jest aktualizowany, a każdy komunikat jest obliczany i przesyłany w tym samym czasie. W tego typu implementacji stany i komunikaty ustabilizują się po liczbie rund, która jest co najwyżej równa średnicy drzewa. W tym momencie wszystkie wszystkie stany wierzchołków będą równe żądanej funkcji celu.
Innym sposobem zaplanowania GDL dla tego problemu jest implementacja szeregowa, która jest podobna do problemu pojedynczego wierzchołka, z tą różnicą, że nie zatrzymujemy algorytmu, dopóki wszystkie wierzchołki wymaganego zestawu nie otrzymają wszystkich komunikatów od wszystkich swoich sąsiadów i obliczą ich państwo. Zatem liczba działań arytmetycznych wymaganych przez tę implementację wynosi co najwyżej operacje arytmetyczne.
Konstruowanie drzewa połączeń
Kluczem do skonstruowania drzewa skrzyżowań jest graf domeny lokalnej grafem ważonym z wierzchołkami tj. jeden dla każdej domeny lokalnej, mający wagę krawędzi zdefiniowany przez . jeśli mówimy, jest zawarte w . Oznaczony przez waga drzewa rozpinającego o maksymalnej wadze przez .
gdzie n to liczba elementów w tym zbiorze. Aby uzyskać więcej jasności i szczegółów, zapoznaj się z nimi.
Twierdzenie o szeregowaniu
Niech drzewem _ _ W tym algorytmie komunikaty są wysyłane w obu kierunkach na dowolnej krawędzi, więc możemy powiedzieć/uznawać zbiór krawędzi E jako zbiór uporządkowanych par wierzchołków. Na przykład z rysunku 1 można zdefiniować w następujący sposób
: podano wszystkie możliwe kierunki, w których wiadomość może podróżować w drzewie.
Harmonogram GDL jest zdefiniowany jako skończona . Który jest ogólnie reprezentowany przez { gdzie komunikatów aktualizowanych podczas algorytmu.
Po zdefiniowaniu / obejrzeniu kilku notacji zobaczymy, że twierdzenie mówi: Kiedy otrzymamy harmonogram , odpowiednia krata wiadomości jako graf skończony skierowany ze zbiorem wierzchołków , w którym typowy element jest oznaczony przez dla , Następnie po zakończeniu przekazywania wiadomości stan w wierzchołku będzie celem zdefiniowanym w
i jeśli istnieje ścieżka od do
Złożoność obliczeniowa
Tutaj staramy się wyjaśnić złożoność rozwiązania problemu MPF pod względem liczby operacji matematycznych wymaganych do obliczeń. tj. Porównujemy liczbę operacji wymaganych przy obliczaniu przy użyciu metody normalnej (tutaj przez metodę normalną rozumiemy metody, które nie wykorzystują przekazywania komunikatów lub drzew połączeń w metodach krótkich, które nie wykorzystują koncepcji GDL) i liczbę operacji wykorzystujących uogólnione prawo dystrybucji.
Przykład: Rozważmy najprostszy przypadek, w którym musimy obliczyć następujące wyrażenie .
Naiwna ocena tego wyrażenia wymaga dwóch mnożeń i jednego dodania. Wyrażenie wyrażone przy użyciu prawa rozdzielności można zapisać jako , która zmniejsza liczbę operacji do jednego
Podobnie jak w powyższym przykładzie, będziemy wyrażać równania w różnych postaciach, aby wykonać jak najmniej operacji, stosując GDL.
Jak wyjaśniono w poprzednich sekcjach, rozwiązujemy problem, używając koncepcji drzew skrzyżowań. Optymalizacja uzyskana przy użyciu tych drzew jest porównywalna z optymalizacją uzyskaną przez rozwiązanie problemu półgrupowego na drzewach. Na przykład, aby znaleźć minimum grupy liczb, możemy zaobserwować, że jeśli mamy drzewo i wszystkie elementy znajdują się na dole drzewa, możemy porównać minimum dwóch elementów równolegle, a wynikowe minimum będzie napisane do rodzica. Kiedy ten proces jest propagowany w górę drzewa, minimum grupy elementów zostanie znalezione w korzeniu.
Poniżej przedstawiono złożoność rozwiązywania drzewa połączeń za pomocą przekazywania komunikatów
Przepisujemy formułę używaną wcześniej do następującej postaci. To jest eqn dla wiadomości, która ma być wysłana z wierzchołka v do w
wiadomości
Podobnie przepisujemy równanie do obliczania stanu wierzchołka v w następujący sposób
Najpierw przeanalizujemy problem pojedynczego wierzchołka i założymy, że docelowy wierzchołek to a zatem mamy jedną krawędź od v . Załóżmy mamy krawędź obliczamy wiadomość za Aby obliczyć wymaga
dodatki i
mnożenia.
(Reprezentujemy jako . )
będzie = ∩ . W ten sposób cała wiadomość będzie potrzebować
dodatki i
mnożenia
Całkowita liczba operacji arytmetycznych wymaganych do wysłania wiadomości w kierunku krawędzi drzewa będzie wynosić
dodatki i
mnożenia.
Gdy wszystkie komunikaty zostaną przesłane, algorytm kończy się obliczeniem stanu w. Obliczenie stanu wymaga ) mnożenia. Zatem liczba obliczeń wymaganych do obliczenia stanu jest podana jak poniżej
dodatki i
mnożenia
Zatem całkowita liczba obliczeń wynosi
----
gdzie mi jest krawędzią, a jej rozmiar jest określony przez
Powyższy wzór daje nam górną granicę.
Jeśli zdefiniujemy złożoność krawędzi jako mi =
Dlatego można zapisać jako
Obliczymy teraz złożoność krawędzi dla problemu zdefiniowanego na rysunku 1 w następujący sposób
+ , co jest znacznie niższe w porównaniu z metodą bezpośrednią. (Tutaj przez metodę bezpośrednią rozumiemy metody, które nie wykorzystują przekazywania komunikatów. Czas potrzebny przy użyciu metody bezpośredniej będzie równoważny obliczeniu komunikatu w każdym węźle i czasowi obliczenia stanu każdego z węzłów.)
Teraz rozważymy problem wszystkich wierzchołków, w którym wiadomość będzie musiała zostać wysłana w obu kierunkach, a stan musi zostać obliczony w obu wierzchołkach. Zajęłoby to v liczba mnożeń do . Tutaj . Np .: Jeśli istnieje zestaw z liczbami . Możliwe jest obliczenie wszystkich iloczynów d za { mnożenia zamiast oczywistych . Robimy to poprzez wstępne obliczenie wielkości i to zajmuje mnożenia Wtedy jeśli iloczyn wszystkich za mamy i tak dalej będzie potrzebował kolejnego mnożenia dające sumę
Niewiele możemy zrobić, jeśli chodzi o konstrukcję drzewa rozpinającego, z wyjątkiem tego, że możemy mieć wiele drzew rozpinających o maksymalnej wadze i powinniśmy wybrać drzewo rozpinające z najmniejszą liczbą χ ( T ) {\ Displaystyle \ a czasami może to oznaczać dodanie domeny lokalnej w celu zmniejszenia złożoności drzewa połączeń.
Może się wydawać, że GDL jest poprawny tylko wtedy, gdy domeny lokalne można wyrazić jako drzewo połączeń. Ale nawet w przypadkach, w których istnieją cykle i liczba iteracji, komunikaty będą w przybliżeniu równe funkcji celu. Eksperymenty z algorytmem Gallagera – Tannera – Wiberga dla kodów kontroli parzystości o niskiej gęstości potwierdziły to twierdzenie.