Matematyka dyskretna 2/Wykład 2: Porządki Częściowe i twierdzenie Dilworth'a

Z Studia Informatyczne
Wersja z dnia 23:00, 21 sie 2006 autorstwa Arek (dyskusja | edycje)
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)
Przejdź do nawigacjiPrzejdź do wyszukiwania

Zbiór częściowo uporządkowany (poset) to para 𝐏=(X,), gdzie X jest zbiorem, zaś jest dwuargumentową relacją określoną na X, która dla dowolnie wybranych x,y,zX spełnia:

  • xx (zwrotność),
  • xy, yx implikuje x=y (antysymetria),
  • xy, yz implikuje xz (przechodniość).
Uwaga

Częściowy porządek wygodnie przedstawiać jest przy użyciu tzw. diagramu Hassego, który przedstawia się na płaszczyźnie 2 w następujący sposób:

  • Umieszczamy punkty obrazujące elementy zbioru X na płaszczyźnie,

oznaczając je małymi kółkami.
Dla elementów x,yX, jeśli y<x, to punkt przypisany elementowi x jest powyżej punktu przypisanemu elementowi y.

  • Łączymy odcinkiem punkt xX z punktem yX,

jeśli x jest następnikiem y, czyli y<x oraz nie istnieje zX, taki że y<z<x.

[!h]

{minmax_poset2} {Diagram Hassego przykładowego porządku 𝐏0. [Rysunek z pliku: minmaxposet2.eps]}

Łańcuch w zbiorze częściowo uporządkowanym 𝐏=(X,) to taki podzbiór C zbioru X, że dla dowolnych x,yX zachodzi:

  • xy oraz xy (liniowość).

Antyłańcuch w zbiorze częściowo uporządkowanym 𝐏=(X,) to taki podzbiór A zbioru X, że dla dowolnych x,yX zachodzi:

  • x≰y oraz x≰y (niezależność).

[!h]

{minmax_poset_chain_antichain} {Łańcuch (a) oraz antyłańcuch (b) w posecie 𝐏0. [Rysunek z pliku: minmaxposetchainantichain.eps]}

Szerokość posetu 𝐏=(X,) to maksymalny możliwy rozmiar antyłańcucha w 𝐏. Szerokość oznaczana będzie za pomocą Parser nie mógł rozpoznać (błąd składni): {\displaystyle {\sf width}\!\left( \mathbf{P} \right)} .
W ogólności szerokość Parser nie mógł rozpoznać (błąd składni): {\displaystyle {\sf width}\!\left( Y \right)} można zdefiniować dla dowolnego podzbioru YX, jako największy możliwy rozmiar antyłańcucha zawartego w Y.

Pokrycie łańcuchowe posetu 𝐏=(X,) to taka rodzina łańcuchów C1,Ck, że

C1Ck=X.

[!h]

{minmax_poset_width_partition} {Antyłańcuch realizujący szerokość (a) oraz pokrycie łańcuchowe (b) posetu 𝐏0. [Rysunek z pliku: minmaxposetwidthpartition.eps]}

Twierdzenie R. P. Dilworth 1950

Minimalna liczba łańcuchów pokrywających poset 𝐏 jest równa szerokości posetu 𝐏.

Dowód

Oczywiście liczba łańcuchów pokrywających poset nie może być mniejsza niż jego szerokość, bo każdy punkt w antyłańcuchu realizującym tę szerokość musi być pokryty innym łańcuchem.

Dowód implikacji odwrotnej przeprowadzimy indukcyjnie ze względu na liczność n posetu 𝐏=(P,). Niech Parser nie mógł rozpoznać (błąd składni): {\displaystyle w={\sf width}\!\left( \mathbf{P} \right)} . Rozważmy maksymalny, w sensie inkluzji, łańcuch C zawarty w 𝐏. Po usunięciu łańcucha C szerokość posetu może zmniejszyć się co najwyżej o jeden. Dowód podzielimy więc na dwa przypadki:

  • Parser nie mógł rozpoznać (błąd składni): {\displaystyle {\sf width}\!\left( P- C \right)=w-1}

Na mocy założenia indukcyjnego poset PC daje się pokryć w1 łańcuchami, które wobec tego wraz z C tworzą szukane pokrycie całego posetu 𝐏 za pomocą w.

  • Parser nie mógł rozpoznać (błąd składni): {\displaystyle {\sf width}\!\left( P- C \right)=w}

Niech A bedzie antyłańcuchem realizującym szerokość zbioru PC, tzn. |A|=w. Połóżmy:

Parser nie mógł rozpoznać (nieznana funkcja „\aligned”): {\displaystyle \aligned U=\left\lbrace p\in P:\textrm{ istnieje }a\in A \textrm{ takie ,że }p\geq a \right\rbrace,\\ D=\left\lbrace p\in P:\textrm{ istnieje }a\in A \textrm{ takie, że }p\leq a \right\rbrace. \endaligned}

Jeśli U=P, to łańcuch C całkowicie zawiera się w U. Z definicji zbioru U wynika, że istnieje element a0A, który jest mniejszy od najmniejszego elementu łańcucha C, a tym samym od wszystkich elementów w C. Skoro APC, to a0∉C i w konsekwencji {a0}C jest łańcuchem istotnie większym od maksymalnego w sensie inkluzji łańcucha C. To pokazuje, że |U|<|P|. Podobnie możemy uzasadnić, że również |D|<|P|. Do obu zbiorów U,D możemy więc zastosować założenie indukcyjne, dostając ich pokrycia łańcuchowe

U=C1Cw,D=C1Cw.

Ponieważ ADU, to każdy element z A należy do jakiegoś łańcucha Ci i do jakiegoś łańcucha Cj. Z drugiej strony fakt, że A jest w-elementowym antyłańcuchem gwarantuje, że w każdym łańcuchu postaci Ci lub Cj jest jakiś element z A. Pozwala to na takie przenumerowanie łańcuchów Ci i Cj, by CiCj, tzn. że dla aA mamy aCi wtedy i tylko wtedy, gdy aCi. To z kolei oznacza, że każda suma CiCi jest łańcuchem. Oczywiście te nowe łańcuchy CiCi pokrywają zbiór DU. Zauważmy jednak, że DU=P, bo inaczej istniałby element pP nieporównywalny z żadnym elementem antyłańcucha A, czyli A{p} byłby antyłańcuchem istotnie większym niż maksymalny antyłańcuch A. W konsekwencji otrzymujemy pokrycie łańcuchowe

P=(C1C1)(CwCw)

całego zbioru P.

Pokrycie antyłańcuchowe posetu 𝐏=(X,) to taka rodzina antyłańcuchów A1,Ak, że

A1Ak=X.

[!h]

{minmax_poset_antichain_partition} {Pokrycie antyłańcuchowe posetu 𝐏0. [Rysunek z pliku: minmaxposetantichainpartition.eps]}

Twierdzenie Dualne Twierdzenie Dilworth'a

Minimalna liczba antyłańcuchów pokrywających poset 𝐏=(P,) jest równa maksymalnej liczności łańcucha zawartego w 𝐏.

Dowód

Moc najdłuższego łańcucha oznaczmy przez h. Niech Ai będzie zbiorem elementów pP spełniających:

(*)
w zbiorze p={xP:px}

najliczniejszy łańcuch jest mocy i.

Pokażemy, że każde Ai jest antyłańcuchem. Istotnie, gdyby dwa różne elementy p1,p2Ai były porównywalne, to możemy bez straty ogólności założyć, że p1<p2. Ponieważ p2Ai, to w zbiorze p2 jest łańcuch o liczności i. Łańcuch ten jednak można by przedłużyć (od dołu) do liczniejszego łańcucha {p1}C2. To oczywiście przeczy temu, że p1Ai. Zatem istotnie każde Ai jest antyłańcuchem. Intuicyjnie antyłańcuchy Ai to kolejne piętra posetu 𝐏. Oczywiście każdy punkt pP musi być w którymś ze zbiorów A1,,Ah, bo p nie może zawierać łańcuchów liczniejszych niż h. Dostaliśmy więc następujące pokrycie antyłańcuchami:

P=A1Ah.

Oczywiście pokrycie to jest najmniej liczne, bo w każdym pokryciu każdy spośród h punktów najdłuższego łańcucha musi leżeć w innym antyłańcuchu.

Wniosek

Każdy zbiór częściowo uporządkowany o rs+1 elementach zawiera łańcuch o liczności r+1 lub antyłańcuch o liczności s+1.

Dowód

Niech 𝐏=(P,) będzie posetem, w którym każdy łańcuch jest liczności co najwyżej r, a każdy antyłańcuch jest liczności co najwyżej s. Dualne Twierdzenie Dilworth'a Uzupelnic th Dilworth 2| dostarcza pokrycie antyłańcuchami

P=A1Ar,

gdzie rr jest mocą łańcucha o maksymalnej liczności. Ponieważ |Ai|s, to

|P|=|A1|++|Ar|rsrs.

Sprzeczność ta pokazuje, że jeśli 𝐏 ma co najmniej rs+1 elementów, to musi zawierać łańcuch o liczności r+1 lub antyłańcuch o liczności s+1.

Uwaga

Dowód wniosku Uzupelnic con rs+1| można równie dobrze przeprowadzić opierając się na Twierdzeniu Dilworth'a Uzupelnic th Dilworth|, co pozostawiamy jako ćwiczenie [ex][ex conclusion from Dilworth].

Jednym z ciekawszych wniosków z Twierdzenia Dilworth'a jest fakt, że każdy ciąg r2+1 liczb rzeczywistych zawiera podciąg monotoniczny o r+1 elementach. Pierwszy dowód tego twierdzenia przedstawili P. Erd{o}s oraz G. Szekres w 1939 roku. Poniżej przedstawione jest uogólnienie tego twierdzenia, którego uzasadnienie będzie korzystało z wniosku Uzupelnic con rs+1|.

Twierdzenie

Każdy ciąg nrs+1 liczb rzeczywistych zawiera podciąg niemalejący o długości r+1 lub podciąg malejący o długości s+1.

Dowód

Niech A=(a1,,an) będzie ciągiem liczb rzeczywistych. Na parach postaci (i,ai), wprowadzamy relację częściowego porządku kładąc

(i,ai)(j,aj) wtedy i tylko wtedy, gdy ij oraz aiaj.

Łańcuchy w tym porządku, to nic innego jak podciągi niemalejące ciągu A, a antyłańcuchy to podciągi malejące ciągu A. Po tym utożsamieniu wystarczy powołać się na Wniosek Uzupelnic con rs+1|.

Krata podzbiorów i twierdzenie Sperner'a.

Dla dowolnego zbioru X rodzina Parser nie mógł rozpoznać (błąd składni): {\displaystyle \mathscr{P}\!\left( X \right)} jego podzbiorów wraz z inkluzją tworzy zbiór częściowo uporządkowany Parser nie mógł rozpoznać (błąd składni): {\displaystyle \left( \mathscr{P}\!\left( X \right),\subseteq \right)} .

[!h]

{minmax_poset_2X} {Posety: Parser nie mógł rozpoznać (błąd składni): {\displaystyle \mathbf{P}_\emptyset=\left( \mathscr{P}\!\left( \emptyset \right),\subseteq \right)} , Parser nie mógł rozpoznać (błąd składni): {\displaystyle \mathbf{P}_{\left\lbrace a \right\rbrace}=\left( \mathscr{P}\!\left( \left\lbrace a \right\rbrace \right),\subseteq \right)} , Parser nie mógł rozpoznać (błąd składni): {\displaystyle \mathbf{P}_{\left\lbrace a,b \right\rbrace}=\left( \mathscr{P}\!\left( \left\lbrace a,b \right\rbrace \right),\subseteq \right)} , Parser nie mógł rozpoznać (błąd składni): {\displaystyle \mathbf{P}_{\left\lbrace a,b,c \right\rbrace}=\left( \mathscr{P}\!\left( \left\lbrace a,b,c \right\rbrace \right),\subseteq \right)} . [Rysunek z pliku: minmaxposet2X.eps]}

Rodzina Sperner'a podzbiorów zbioru X to antyłańcuch w posecie Parser nie mógł rozpoznać (błąd składni): {\displaystyle \left( \mathscr{P}\!\left( X \right),\subseteq \right)} .

Starano się oszacować liczność rodzin Spernera, czyli znaleźć szerokość posetu Parser nie mógł rozpoznać (błąd składni): {\displaystyle \left( \mathscr{P}\!\left( X \right),\subseteq \right)} . Poniższe twierdzenie pomaga odpowiedzieć na to pytanie.

Twierdzenie K. Yamamoto 1954; L. D. Meshalkin 1963; D. Lubell 1966

Niech {A1,,Am} będzie rodziną Spernera podzbiorów zbioru X. Wówczas

i=1m(|X||Ai|)11.

Dowód Dowód (D. Lubell).

Niech n=|X|. W posecie Parser nie mógł rozpoznać (błąd składni): {\displaystyle \left( \mathscr{P}\!\left( X \right),\subseteq \right)} każdy maksymalny łańcuch

=C0C1Cn1Cn=X

musi spełniać |Cj|=j. Zbiór C1 może być wybrany na n sposobów, z kolei C2 na n1 sposobów. W ogólności Cj może być wybrany na nj+1 sposobów. Czyli łącznie jest n! różnych łańcuchów maksymalnych.

Z drugiej strony policzymy ile jest łańcuchów, w których występuje konkretny zbiór Ai z rodziny Spernera, tzn.

=C0C1C|Ai|=AiCn1Cn=X

Ponieważ singleton C1 musi zawierać się w Ai, może być wybrany na |Ai| sposobów. Tak więc C2 może być wybrane już jedynie na |Ai|1 sposobów i tak dalej. A zatem różnych łańcuchów postaci

=C0C1C|Ai|=Ai

jest |Ai|!. W analogiczny sposób otrzymujemy, że różnych łańcuchów postaci

Ai=C|Ai|C|Ai|+1Cn=X

jest (n|Ai|)!. Podsumowując, liczba maksymalnych łańcuchów, w których występuje Ai wynosi |Ai|!(n|Ai|)!.

Ponieważ {A1,,Am} jest antyłańcuchem, to dla ij w łańcuchu nie mogą wystąpić równocześnie Ai i Aj. Zliczając teraz maksymalne łańcuchy przechodzące przez któreś Ai, możemy pominąć jakiś łańcuch maksymalny. Nie mniej jednak mamy

i=1m|Ai|!(n|Ai|)!n!.

To w konsekwencji daje

i=1m1(n|Ai|)=i=1m|Ai|!(n|Ai|)!n!1.

Przykład

Oczywiście, dla ustalonego k rodzina k-elementowych podzbiorów jest rodziną Spernera. Ponieważ wartość (nk) jest maksymalna dla Parser nie mógł rozpoznać (błąd składni): {\displaystyle k=\left\lfloorn/2\right\rfloor} , to n-elementowy podzbiór ma rodzinę Spernera o mocy Parser nie mógł rozpoznać (błąd składni): {\displaystyle {n \choose \left\lfloorn/2\right\rfloor}} . Następne twierdzenie pokazuje, że jest to najliczniejsza rodzina Spernera.

Twierdzenie E. Sperner 1928

Jeśli Parser nie mógł rozpoznać (błąd składni): {\displaystyle \mathscr{A}} jest rodziną Spernera podzbiorów zbioru X, to

Parser nie mógł rozpoznać (błąd składni): {\displaystyle \left\vert \mathscr{A} \right\vert\leq{\left\vert X \right\vert\choose\left\lfloor\left\vert X \right\vert/2\right\rfloor}. }

Dowód

Niech n=|X| oraz Parser nie mógł rozpoznać (błąd składni): {\displaystyle \mathscr{A}=\left\lbrace A_1,\ldots,A_m \right\rbrace} . Wartość (nk) jest maksymalna dla Parser nie mógł rozpoznać (błąd składni): {\displaystyle k=\left\lfloorn/2\right\rfloor} . Tak więc (n|Ai|)(nn/2). Na mocy Twierdzenia Uzupelnic th Yamamoto| otrzymujemy:

Parser nie mógł rozpoznać (błąd składni): {\displaystyle m\frac{1}{{n \choose \left\lfloorn/2\right\rfloor }}\leq\sum_{i=1}^{m}{\frac{1}{{n\choose\left\vert A_i \right\vert}}}\leq 1, }

skąd natychmiast

Parser nie mógł rozpoznać (błąd składni): {\displaystyle m\leq{n\choose\left\lfloorn/2\right\rfloor}. }
Uwaga

W posecie Parser nie mógł rozpoznać (błąd składni): {\displaystyle \left( \mathscr{P}\!\left( X \right),\subseteq \right)} dowolne dwa jego elementy Parser nie mógł rozpoznać (błąd składni): {\displaystyle A,B\in\mathscr{P}\!\left( X \right)} spełniają:

  • AB jest największym wspólnym ograniczeniem dolnym dla A i B,
  • AB jest największym wspólnym ograniczeniem górnym dla A i B.

W takim razie dowolne dwa elementy posetu Parser nie mógł rozpoznać (błąd składni): {\displaystyle \left( \mathscr{P}\!\left( X \right),\subseteq \right)} mają najmniejsze ograniczenie górne oraz największe ograniczenie dolne. Posety o tej własności nazywane są kratami.

Krata to częściowy porządek 𝐏=(P,), w którym dla dowolnych a,bP istnieją

  • kres dolny, czyli największe ograniczenie dolne wspólne dla a i b.

Kres dolny oznaczać bedziemy przez ab.

  • kres górny, czyli najmniejsze ograniczenie górne wspólne dla a i b.

Kres dolny oznaczać bedziemy przez ab.

Przykład

Rozważmy zbiór liczb naturalnych oraz relacje zdefiniowaną w następujący sposób

abwtedyitylkowtedy,gdya dzieli bdla a,b.

Relacja jest zwrotna, antysymetryczna, i przechodnia. Tak więc para (,) tworzy częściowy porządek. Jako ćwiczenie [ex][ex nww nwd] pozostawiamy do udowodnienia, że (,) jest kratą, oraz że kres dolny dwu liczb naturalnych to ich największy wspólny dzielnik, a kres ich kres górny to najmniejsza wspólna wielokrotność.