Kostka binarna
Wykłady z matematyki dyskretnej dla informatyków i teleinformatyków
UTP Bydgoszcz
06
Relacja częściowo porządkująca
Przypomnienie:
Relację % ⊆ X × X nazywamy relacją w zbiorze X .
Relacja % w zbiorze X jest zwrotna, gdy (x , x ) ∈ % dla wszystkich x ∈ X . Relacja % w zbiorze X jest antysymetryczna, gdy
(x , y ) ∈ % i (y , x ) ∈ % implikuje x = y dla wszystkich x , y ∈ X . Relacja % w zbiorze X jest przechodnia, gdy dla wszystkich x , y , z ∈ X .
(x , y ) ∈ % ∧ (y , z) ∈ %⇒ (x, z) ∈ %.
Definicja.
Relacja % w zbiorze X jest częściowo porządkującą wtedy i tylko wtedy, gdy jest jednocześnie: zwrotna,antysymetryczna iprzechodnia.
Relacja częściowo porządkująca
Oznacza to, że v jest relacją częściowo porządkującą w zbiorze X , gdy dla każdych a, b, c ∈ X spełnione są (jednocześnie) warunki:
a v a
jeśli a v b ∧ b v a, to a = b jeśli a v b ∧ b v c, to a v c PRZYKŁAD 1.
Relacja ¬ w zbiorze R.
PRZYKŁAD 2.
Relacja w zbiorze Z.
PRZYKŁAD 3.
Relacja ⊇ w zbiorze podzbiorów zbioru R2.
v jest relacją częściowo porządkującą w zbiorze X , gdy dla każdych a, b, c ∈ X spełnione są warunki:
a v a
jeśli a v b ∧ b v a, to a = b jeśli a v b ∧ b v c, to a v c
PRZYKŁAD 4.
Niech P będzie dowolną niepustą rodziną podzbiorów niepustego zbioru X . Relacja inkluzji ⊆ jest relacją częściowo porządkującą P.
Uzasadnienie.
dla dowolnych A, B, C ∈ P mamy:
A ⊆ A,
jeżeli A ⊆ B i B ⊆ A, to A = B, jeżeli A ⊆ B i B ⊆ C , to A ⊆ C.
v jest relacją częściowo porządkującą w zbiorze X , gdy dla każdych a, b, c ∈ X spełnione są warunki:
a v a
jeśli a v b ∧ b v a, to a = b jeśli a v b ∧ b v c, to a v c
PRZYKŁAD 5.
Relacja v określona w zbiorze punktów na płaszczyźnie R2 następująco:
(a1, a2) v (b1, b2) ⇔ a1¬ b1∧ a2 ¬ b2. PRZYKŁAD 6.
Relacja v określona w zbiorze punktów przestrzeni Rn następująco:
(a1, a2, . . . , an) v (b1, b2, . . . , bn) ⇔ a1¬ b1∧ a2 ¬ b2, . . . , an¬ bn. PRZYKŁAD 7.
Relacja v określona jak w przykładzie 6 w zbiorze wierzchołków n-wymiarowej kostki jednostkowej [0, 1]n.
Kostka binarna Q
nDefinicja.
n-elementowym ciągiem binarnym nazywamy n-elementowy ciąg złożony z zer i jedynek (zapisywany, zazwyczaj, bez przecinków).
Obserwacja.
Istnieje bijekcja między zbiorem n-elementowych ciągów binarnym (“zapis bez przecinków”), a zbiorem wierzchołków n-wymiarowej kostki jednostkowej (“zapis z nawiasem i przecinkami”).
Na przykład ciągowi 101 odpowiada wierzchołek (1, 0, 1) jednostkowej kostki trójwymiarowej, a wierzchołkowi (1, 0, 1) odpowiada ciąg 101.
Fakt.
n-wymiarowa kostka ma 2n wierzchołków.
Kostka binarna Q
nDefinicja.
n-wymiarowa kostka binarna Qnto zbiór n-elementowych ciągów binarnych wraz z relacją częściowo porządkującą v określoną następująco:
dla dowolnych ciągów binarnych p = p1. . . pn oraz q = q1. . . qn
(gdzie pi, qi ∈ {0, 1} dla i = 1, 2, . . . , n):
p v q ⇔ ∀i ∈{1,...,n} pi ¬ qi
Obserwacja. n-wymiarową kostkę binarną możemy utożsamiać z wierzchołkami n-wymiarowej kostki jednostkowej z relacją częściowego porządku określoną jak w przykładach 6, 7.
Q
1,
p v q ⇔ ∀i ∈{1,...,n} pi¬ qi0 1
0 v 1
Obserwacja.
Kostkę binarną Qn możemy narysować tak, że
dwa wierzchołki p oraz q są połączone krawędzią oraz p leży ”niżej” niż q wtedy i tylko wtedy, gdy
p v q i nie istnieje wierzchołek u, taki że u 6= p, u 6= q oraz p v u v q.
Q
2,
p v q ⇔ ∀i ∈{1,...,n} pi¬ qi00
10 01
11
00 v 10, 10 v 11, 00 v 01, 01 v 11
Obserwacja.
Kostkę binarną Qn możemy narysować tak, że
dwa wierzchołki p oraz q są połączone krawędzią oraz p leży ”niżej” niż q wtedy i tylko wtedy, gdy
p v q i nie istnieje wierzchołek u, taki że u 6= p, u 6= q oraz p v u v q.
Q
3, zapis z przecinkami
(0,0,0)
(1,0,0) (0,0,1)
(1,0,1)
(0,1,0)
(1,1,0) (0,1,1)
(1,1,1)
Q
3, zapis bez przecinków,
p v q ⇔ ∀i ∈{1,...,n} pi¬ qi000
100 001
101
010
110 011
111
000 v 100, 000 v 010, 000 v 001, 100 v 110, 100 v 101, 010 v 110, 010 v 011, 001 v 101, 001 v 011, 110 v 111, 011 v 111
Podkostka (segment)
Definicja. Niech p oraz q będą n-elementowymi ciągami binarnymi oraz niech p v q. Podkostką (segmentem) [p, q] kostki binarnej Qn (z relacją v) nazywamy zbiór
[p, q] = {n − elementowych ciągów binarnych c : p v c ∧ c v q}
(wraz z relacją v).
Oznaczmy przez p = (p1, . . . , pn) początek, a przez q = (q1, . . . , qn) koniec (niepustego) segmentu. Oczywiście,
p1¬ q1, p2 ¬ q2, . . . , pn¬ qn.
Definicja. Wymiarem podkostki [p, q] nazywamy liczbę Pni =1 qi− pi. Przykład. Podkostką [000, 111] jest cała kostka Q3. Jest to podkostka trójwymiarowa.
Podkostka (segment)
Znajdziemy bijekcję między n-elementowymi ciągami ζ1ζ2, . . . ζn, gdzie ζi ∈ {0, 1, ∗}, a podkostkami [p, q] kostki Qn.
Bijekcja: ciągowi ζ1ζ2. . . ζn odpowiada segment [p, q], gdzie pi = qi = 0 wtedy i tylko wtedy, gdy ζi = 0,
pi = qi = 1 wtedy i tylko wtedy, gdy ζi = 1, pi = 0, qi = 1 wtedy i tylko wtedy, gdy ζi = ∗.
Wniosek.
Podkostki możemy oznaczać jako n elementowe ciągi zer, jedynek i gwiazdek.Liczba gwiazdek jest równa wymiarowi podkostki.
Przykład. Zapis
(1 ∗ ∗0) lub (1, ∗, ∗, 0) lub 1 ∗ ∗0
oznacza segment (dwuwymiarową podkostkę) o początku 1000 i końcu 1110, czyli zbiór wierzchołków {1000, 1100, 1010, 1110}.
Trójwymiarowa podkostka [000, 111], czyli ∗ ∗ ∗,
zapis bez przecinków000
100 001
101
010
110 011
111
Dwuwymiarową podkostką [(0, 0, 0), (1, 1, 0)] (czyli ∗ ∗ 0) jest zbiór {(0, 0, 0), (1, 0, 0), (0, 1, 0), (1, 1, 0)},
zapis z przecinkami(0,0,0)
(1,0,0) (0,0,1)
(1,0,1)
(0,1,0)
(1,1,0) (0,1,1)
(1,1,1)
(0,0,0) (1,0,0)
(0,1,0) (1,1,0)
Podkostka kostki binarnej
Przykłady.
Podkostka [1101, 1101] kostki Q4 (czyli 1101) jest zerowymiarowa (zero gwiazdek, tu zawsze qi = pi).
Podkostka [0011, 1011] kostki Q4 (czyli ∗011) jest jednowymiarowa (jedna gwiazdka, tu tylko q1 6= p1).
Podkostka [0000, 0101] kostki Q4 (czyli 0 ∗ 0∗) jest dwuwymiarowa (dwie gwiazdki, tu tylko q2 6= p2 oraz q4 6= p4).
Podkostka [0100, 1111] kostki Q4 (czyli ∗1 ∗ ∗) jest trójwymiarowa (w oznaczeniu ∗1 ∗ ∗ występują trzy gwiazdki).
Podkostka [0000, 1111] kostki Q4 (czyli ∗ ∗ ∗∗) jest czterowymiarowa (teraz mamy cztery gwiazdki).
Podkostka kostki binarnej,
zapis z przecinkami Niech 1 ¬ k ¬ 2n oraz niech a1 = (a(1)1 , a(1)2 , . . . , a(1)n ), a2 = (a1(2), a(2)2 , . . . , a(2)n ), ..., ak = (a1(k), a(k)2 , . . . , a(k)n ) Fakt.Najmniejszą podkostką zawierającą a1, . . . , ak jest segment o końcach p =min a(1)1 , a(2)1 , . . . , a(k)1 , . . . , min a(1)n , a(2)n , . . . , an(k)
q =max a(1)1 , a(2)1 , . . . , a(k)1 , . . . , max a(1)n , a(2)n , . . . , a(k)n Przykład. Najmniejszą podkostką kostki Q4 zawierającą (0,1, 0,0) oraz (0,0, 0,1) jest segment [(0,0, 0,0), (0,1, 0,1)], czyli 0 ∗ 0∗.
Przykład. Najmniejszą podkostką zawierającą (1, 1, 0, 0), (0, 1, 0, 1) oraz (0, 1, 1, 1) jest segment [(0, 1, 0, 0), (1, 1, 1, 1)], czyli ∗1 ∗ ∗.
Podkostka kostki binarnej, nieco inne spojrzenie, p ∨ q = max(p, q), p ∧ q = min(p, q)
Przypomnienie z logiki:
p q p ∨ q
0 0 0
0 1 1
1 0 1
1 1 1
p q p ∧ q
0 0 0
0 1 0
1 0 0
1 1 1
W zbiorze wierzchołków n-wymiarowej kostki jednostkowej (zapis z przecinkami) lub w zbiorze n-elementowych ciągów binarnych(zapis bez przecinków) określamy działania ∧ oraz ∨ następująco:
(p1, p2, . . . , pn) ∧ (q1, q2, . . . , qn) = (p1∧ q1, p2∧ q2, . . . , pn∧ qn), (p1, p2, . . . , pn) ∨ (q1, q2, . . . , qn) = (p1∨ q1, p2∨ q2, . . . , pn∨ qn), Obserwacja.
Najmniejszą podkostką zawierającą a1= (a(1)1 , a(1)2 , . . . , an(1)), . . . , ak = (a(k)1 , a(k)2 , . . . , a(k)n ) jest segment o końcach
u = a1∧ a2∧ · · · ∧ ak oraz v = a1∨ a2∨ · · · ∨ ak.
Jedna z sześciu podkostek dwuwymiarowych kostki trójwymiarowej,
zapis z przecinkami(0,0,0)
(1,0,0) (0,0,1)
(1,0,1)
(0,1,0)
(1,1,0) (0,1,1)
(1,1,1)
(0,0,0) (1,0,0)
(0,1,0) (1,1,0)
Jest to minimalna podkostka (∗ ∗ 0) zawierająca (0, 1, 0) oraz (1, 0, 0),
zapis z przecinkami(0,0,0)
(1,0,0) (0,0,1)
(1,0,1)
(0,1,0)
(1,1,0) (0,1,1)
(1,1,1)
(0,0,0) (1,0,0)
(0,1,0) (1,1,0)
Jedna z dwunastu podkostek jednowymiarowych kostki trójwymiarowej, ∗10 ,
zapis z przecinkami(0,0,0)
(1,0,0) (0,0,1)
(1,0,1)
(0,1,0)
(1,1,0) (0,1,1)
(1,1,1)
(0,1,0) (1,1,0)
Jedna z ośmiu podkostek zerowymiarowych kostki trójwymiarowej, 011,
zapis z przecinkami(0,0,0)
(1,0,0) (0,0,1)
(1,0,1)
(0,1,0)
(1,1,0) (0,1,1)
(1,1,1)
(0,1,1)
Kostka binarna Q
4,
zapis z przecinkami(0,0,0,0)
(1,0,0,0) (0,0,0,1)
(1,0,0,1) (1,1,0,0)
(0,1,0,0)
(0,1,0,1) (1,1,0,1)
(1,1,1,1)
(1,1,1,0) (0,1,1,1)
(0,1,1,0)
(0,0,1,1)
(0,0,1,0) (1,0,1,0)
(1,0,1,1)
Q
4,
zapis bez przecinków0000
1000 0001
1001 1100
0100
0101 1101
1111
1110 0111
0110
0011
0010 1010
1011
Jedna z 16 podkostek zerowymiarowych kostki
czterowymiarowej, 1101
Jedna z 16 podkostek zerowymiarowych kostki czterowymiarowej, 1101
1101
Jedna z 32 podkostek jednowymiarowych kostki
czterowymiarowej, ∗011
Jedna z 32 podkostek jednowymiarowych kostki czterowymiarowej, ∗011
0011 1011
Kolejna z 32 podkostek jednowymiarowych kostki
czterowymiarowej, ∗010
Kolejna z 32 podkostek jednowymiarowych kostki czterowymiarowej, ∗010
0010 1010
Kostka czterowymiarowa
Kilka z 24 podkostek dwuwymiarowych kostki
czterowymiarowej
Kilka z 24 podkostek dwuwymiarowych kostki
czterowymiarowej
Kilka z 24 podkostek dwuwymiarowych kostki
czterowymiarowej
Kilka z 24 podkostek dwuwymiarowych kostki
czterowymiarowej
Kilka z 24 podkostek dwuwymiarowych kostki
czterowymiarowej
Kilka z 24 podkostek dwuwymiarowych kostki
czterowymiarowej
Wszystkie osiem podkostek trójwymiarowych kostki
czterowymiarowej
Wszystkie osiem podkostek trójwymiarowych kostki
czterowymiarowej
Wszystkie osiem podkostek trójwymiarowych kostki
czterowymiarowej
Wszystkie osiem podkostek trójwymiarowych kostki
czterowymiarowej
Wszystkie osiem podkostek trójwymiarowych kostki
czterowymiarowej
Wszystkie osiem podkostek trójwymiarowych kostki
czterowymiarowej
Wszystkie osiem podkostek trójwymiarowych kostki
czterowymiarowej
Wszystkie osiem podkostek trójwymiarowych kostki
czterowymiarowej
Wszystkie osiem podkostek trójwymiarowych kostki
czterowymiarowej
Wszystkie osiem podkostek trójwymiarowych kostki
czterowymiarowej
Wszystkie osiem podkostek trójwymiarowych kostki
czterowymiarowej
Wszystkie osiem podkostek trójwymiarowych kostki
czterowymiarowej
Jedyna podkostka czterowymiarowa kostki
czterowymiarowej
Podkostka czterowymiarowa Q
4, ∗ ∗ ∗∗
0000
1000 0001
1001 1100
0100
0101 1101
1111
1110 0111
0110
0011
0010 1010
1011
Liczba podkostek
Twierdzenie.
W kostce binarnej Qn istnieje 3n podkostek.
Dowód.
Każda podkostka to segment o początku p = p1. . . pn i końcu q = q1. . . qn, gdzie pi ¬ qi dla każdego i .
Jak wiemy, istnieje bijekcja między ciągami n-elementowymi ζ1ζ2. . . ζn, gdzie ζi ∈ {0, 1, ∗}, a podkostkami [p, q] kostki Qn.
Takich ciągów jest 3n (każda z n pozycji może być obsadzona na trzy sposoby: przez 0, 1 lub ∗).
Liczba podkostek równa się liczbie takich ciągów i wynosi 3n.
Liczba podkostek
Twierdzenie.
W kostce binarnej Qn istnieje nk· 2n−k podkostek k-wymiarowych.
Dowód.
Zastosujemy znaną bijekcję między ciągami n-elementowymi ζ1ζ2. . . ζn, gdzie ζi ∈ {0, 1, ∗}, a podkostkami [p, q] kostki Qn.
Kostce k-wymiarowej odpowiada k symboli ∗ w ciągu. Wybieramy k miejsc (z n pozycji), na których umieścimy ∗. Tych wyborów jest nk. Pozostałe n − k miejsc obsadzamy albo zerem, albo jedynką. Tu mamy 2n−k możliwości.
Wszystkich k-wymiarowych podkostek jest tyle, ile n-elementowych ciągów z k gwiazdkami, czyli nk· 2n−k.
Liczba podkostek
Wniosek.
W kostce binarnej Qn istnieje Pnk=0 kn· 2n−k podkostek.
Wniosek.
Pn k=0
n k
· 2n−k = 3n.
Własność. Wiemy że kn= n−kn . Zatem (podstawiając n − k = i )
3n=
n
X
k=0
n k
!
· 2n−k =
n
X
k=0
n n − k
!
· 2n−k =
n
X
i =0
n i
!
· 2i
Kod Graya
Kod Graya długości n to 2n-elementowy ciąg różnych n-elementowych ciągów binarnych (ciągów zer i jedynek) ustawionych tak, by każde dwa kolejne wyrazy ciągu, a także wyraz pierwszy i ostatni, różniły się dokładnie jedną cyfrą.
Przykład jednego z kodów Graya długości dwa: 00, 01, 11, 10.
Przykład jednego z kodów Graya długości trzy:
000, 001, 011, 010, 110, 111, 101, 100.
Uwaga. Kodów Graya używa się do etykietowania procesorów w sieci będącej kostką binarną. Dwa procesory są połączone wtedy i tylko wtedy, gdy ich etykiety różnią się dokładnie jednym bitem.
Numeracja wierzchołków
Obserwacja.
Wszystkie wierzchołki kostki binarnej Qn są w „naturalny” sposób ponumerowane liczbami 0, 1, 2, 3, . . . 2n− 1:
każdemy ciągowi binarnemu odpowiada liczba w zapisie dwójkowym.
000 001
100 010
101 011
110 111
0 1
4 2
5 3
6 7
Przekazywanie informacji
Wierzchołki kostki binarnej to (ponumerowani) agenci, a krawędzie to łącza, którymi mogą się komunikować między sobą.
Schemat rozsyłania wiadomości w Qn.
Wiadomość wysyłana jest z wierzchołka o numerze 0.
Dla każdego i od 1 do n wykonaj:
każdy wierzchołek o numerze m < 2i −1 przekazuje wiadomość do wierzchołka o numerze m + 2i −1.
Obserwacja.
Aby wiadomość dotarła do wszystkich wierzchołków kostki Qn wystarczy n etapów.
Przekazywanie informacji, wystarczy n etapów
Uzasadnienie.
Pokażemy, indukcyjnie, że po k-tym etapie wiadomość jest znana wszystkim wierzchołkom o numerach mniejszych niż 2k.
Dla k = 0 (na „starcie”) wiadomość zna wierzchołek 0 (czyli ten o numerze mniejszym niż 20= 1).
Dla k = 1 (po pierwszym etapie) wiadomość znają dwa wierzchołki o numerach mniejszych niż 21= 2.
Załóżmy, że przed k-tym etapem wiadomość znają wierzchołki o numerach m = 0, 1, . . . , 2k−1− 1.
Po k-tym etapie każdy taki wierzchołek przekazał informację wierzchołkowi o numerzem + 2k−1, zatem wiadomość znają wierzchołki o numerach
0, 1, . . . , 2k−1− 1,0 + 2k−1, 1 + 2k−1, . . . , 2k−1− 1 + 2k−1, czyli wszystkie o numerach mniejszych od 2k.
Przekazywanie informacji w kostce Q
3000 001
100 010
101 011
110 111
0 1
4 2
5 3
6 7
Pierwszy etap.
Dla i = 1 każdy wierzchołek o numerze m < 21−1 (czyli wierzchołek o numerze 0) przekazuje wiadomość do wierzchołka o numerze 0 + 21−1= 1.
Przekazywanie informacji w kostce Q
3000 001
100 010
101 011
110 111
0 1
4 2
5 3
6 7
Drugi etap.
Dla i = 2 każdy wierzchołek o numerze m < 22−1= 2, czyli wierzchołki o numerach 0 oraz 1, przekazują wiadomość do wierzchołków o numerach m + 22−1= m + 2 (czyli 0 + 2 = 2, 1 + 2 = 3).
Przekazywanie informacji w kostce Q
3000 001
100 010
101 011
110 111
0 1
4 2
5 3
6 7
Trzeci etap (ostatni).
Dla i = 3 każdy wierzchołek o numerze m < 23−1= 4, czyli wierzchołki o numerach 0, 1, 2, 3, przekazują wiadomość do wierzchołków o numerach m + 23−1= m + 4 (czyli 4, 5, 6, 7).
Przekazywanie informacji w kostce Q
40000
1000 0001
1001 1100
0100
0101 1101
1111
1110 0111
0110
0011
0010 1010
1011
Numeracja wierzchołków
0
8 1
9 12
4
5 13
15
14 7
6
3
2 10
11
Przekazywanie informacji w kostce Q
4, etap pierwszy, +1
0
8 1
9 12
4
5 13
15
14 7
6
3
2 10
11
Przekazywanie informacji w kostce Q
4, etap drugi, +2
0
8 1
9 12
4
5 13
15
14 7
6
3
2 10
11
Przekazywanie informacji w kostce Q
4, etap trzeci, +4
0
8 1
9 12
4
5 13
15
14 7
6
3
2 10
11
Przekazywanie informacji w kostce Q
4, etap czwarty, +8
0
8 1
9 12
4
5 13
15
14 7
6
3
2 10
11
Zbieranie informacji
Zbieramy do jednego wierzchołka informacje od wszystkich wierzchołków.
Wiadomości (łączone w pakiety) przesyłamy w odwrotną stronę niż przy przekazywaniu informacji.
Zbieranie informacji w kostce Q
30 1
4 2
5 3
6 7
Zbieranie informacji w kostce Q
30 1
4 2
5 3
6 7
Zbieranie informacji w kostce Q
30 1
4 2
5 3
6 7
Zbieranie informacji w kostce Q
30 1
4 2
5 3
6 7
Zbieranie informacji w kostce Q
30 1
4 2
5 3
6 7
Zbieranie informacji w kostce Q
30 1
4 2
5 3
6 7
Zbieranie informacji w kostce Q
30 1
4 2
5 3
6 7
Zbieranie informacji w kostce Q
4, etap pierwszy
0
8 1
9 12
4
5 13
15
14 7
6
3
2 10
11
0
8 1
9 12
4
5 13
15
14 7
6
3
2 10
11
Zbieranie informacji w kostce Q
4, etap drugi
0
8 1
9 12
4
5 13
15
14 7
6
3
2 10
11
0
8 1
9 12
4
5 13
15
14 7
6
3
2 10
11
Zbieranie informacji w kostce Q
4, etap trzeci
0
8 1
9 12
4
5 13
15
14 7
6
3
2 10
11
0
8 1
9 12
4
5 13
15
14 7
6
3
2 10
11
Zbieranie informacji w kostce Q
4, etap czwarty
0
8 1
9 12
4
5 13
15
14 7
6
3
2 10
11
0
8 1
9 12
4
5 13
15
14 7
6
3
2 10
11