Lider zbioru
Transkrypt
Lider zbioru
(C) 2005 RoG@j 2005-03-16 Lider Lider zbioru Modalna i mediana Pewne twierdzenie… Algorytm znajdywania lidera ! ! ! Modalna ! Znalezienie modalnej (najczęściej występującej wielkości w zbiorze) i sprawdzenie, czy jej częstość w zbiorze jest większa niż wartość n/2. ! ! Jeśli zbiór X zawiera lidera, a x i y są jego dwoma różnymi elementami, to zbiór Y=X-{x, y}, który powstał przez usunięcie elementów x i y ze zbioru X również zawiera lidera. ! ! ! ! Znalezienie mediany, czyli elementu znajdującego się na pozycji n/2 i sprawdzenie, czy jest on liderem - jeśli zbiór ma lidera, to musi on być jego medianą!!! ! ! l -element X, który jest liderem, ! ! Odwrotne twierdzenie nie jest prawdziwe. X={1, 2, 2, 3, 4} nie ma lidera Y=X-{1, 3}={2, 2, 4} zawiera już lidera, którym jest liczba 2. Istnieje algorytm znajdywania mediany, który nie korzysta z porządkowania zbioru, ale jest on niezwykle złożony Dowód (uzasadnienie) Zredukowany zbiór Y może zawierać lidera, choć go nie było w zbiorze X. ! Alg 15 Mediana Jest to pracochłonne, bo dla znalezienia modalnej trzeba najpierw uporządkować zbiór. Twierdzenie Liderem w zbiorze nazywamy element, który występuje w zbiorze więcej niż połowę razy, czyli więcej, niż n/2 razy, gdy n jest mocą zbioru. Problem ten występuje w wyborach, w których zwycięzca musi uzyskać więcej niż połowę głosów. Znalezienie lidera w zbiorze można zastąpić określeniem innych miar centralności. ! ! ! jeśli x i y są dwoma różnymi elementami X to co najwyżej jeden z nich = l, w zredukowanym zbiorze liczba elementów jest mniejsza o 2, częstość występowania l jest mniejsza co najwyżej o jeden, l pozostanie więc liderem w zbiorze Y. Musimy jedynie sprawdzić, czy lider Y jest liderem początkowego zbioru X. 1 (C) 2005 RoG@j (1) Algorytm znajdywania lidera w zbiorze 2005-03-16 (2) Algorytm znajdywania lidera w zbiorze ! ! ! ! ! Dane: Zbiór X złożony z n elementów {x1, x2, …, xn} Wynik: Lider l w zbiorze X lub informacja, że X nie zawiera lidera. Krok 1: Przyjmij x1 za lidera l oraz niech c:=1 {Kroki 2-5 stanowią etap wykrywania kandydata na lidera w X} (3) Algorytm znajdywania lidera w zbiorze ! Krok 5: {Porównujemy kolejny element zbioru X z kandydatem na lidera} ! ! ! Jeśli xi=l to zwiększamy c o 1 (c:=c+1) {kolejny element jest równy liderowi} W przeciwnym wypadku zmniejszamy c o 1 (c:=c1) {kolejny element nie jest równy liderowi usuwamy go wraz z jedną krotnością lidera} ! Alg 15 ! (4) Algorytm znajdywania lidera w zbiorze ! ! ! W krokach 6-8 sprawdzamy, czy l jest rzeczywiście liderem w zbiorze X Złożoność obliczeniowa algorytmu ! ! W pierwszym etapie dla każdego elementu zbioru X (za wyjątkiem pierwszego) jest wykonywane jedno takie działanie jak w kroku 3 lub 5 W drugim etapie porównywania są wykonywane w kroku 6 (jedno) i w kroku 8 (n+1: n porównań, by obliczyć wielokrotność l w zbiorze X i jedno porównanie, by sprawdzić, czy ta wielokrotność jest większa od n/2). Krok 2: Dla kolejnych wartości i=2, 3, ?, n wykonaj kroki 3-5 a następnie przejdź do kroku 5. Krok 3: Jeśli c=0, to wykonujemy krok 4, a w przeciwnym wypadku wykonujemy krok 5. Krok 4: {Obieramy nowego kandydata na lidera} Przyjmujemy xi za lidera l i niech c:=1. Krok 6: Jeśli c=0, to przejdź do kroku 7, a w przeciwnym wypadku przejdź do kroku 8. Krok 7: Zbiór X nie ma lidera. Zakończ algorytm. Krok 8: Wyznacz, ile razy kandydat na lidera występuje w zbiorze X. ! ! Jeśli ta liczba jest większa od n/2 to l jest liderem W przeciwnym razie ten zbiór nie zawiera lidera. Konkluzja ! W sumie liczba porównań wynosi (n-1)+(1+n+1)=2n+1 2