Teoria informacji/TI Ćwiczenia 1: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Stromy (dyskusja | edycje)
Nie podano opisu zmian
Dorota (dyskusja | edycje)
Linia 29: Linia 29:


{{cwiczenie|2 [Rozpoznawanie kodów]|Ćwiczenie 2|
{{cwiczenie|2 [Rozpoznawanie kodów]|Ćwiczenie 2|
Czy istnieje algorytm, który dla dowolnego skończonego zbioru X nad alfabetem <math>\Sigma</math> stwierdza czy X jest kodem?}}
Czy istnieje algorytm, który dla dowolnego skończonego zbioru X nad alfabetem <math>\Sigma</math> stwierdza, czy X jest kodem?}}


<div class="mw-collapsible mw-made=collapsible mw-collapsed">
<div class="mw-collapsible mw-made=collapsible mw-collapsed">
Wskazowka   
Wskazowka   
<div class="mw-collapsible-content" style="display:none">
<div class="mw-collapsible-content" style="display:none">
Należy sprawdzić czy jakiś ciąg znaków można uzyskać na więcej niż jeden sposób. Czy można jakoś ograniczyć z góry długość ciągów jakie wystarczy sprawdzić?
Należy sprawdzić, czy jakiś ciąg znaków można uzyskać więcej niż jednym sposobem. Czy można jakoś ograniczyć z góry długość ciągów, jakie wystarczy sprawdzić?
</div>
</div>
</div>
</div>
Linia 41: Linia 41:
{{rozwiazanie|||  }}
{{rozwiazanie|||  }}
<div class="mw-collapsible-content" style="display:none">
<div class="mw-collapsible-content" style="display:none">
Algorytm taki istnieje. Przyda się do niego operacja odwrotna do konkatenacji słów. Jeśli x i y są słowami takimi że x jest prefiksem y, to niech <math>z=x^{-1}y \Longleftrightarrow xz=y</math>.
Algorytm taki istnieje. Przyda się do niego operacja odwrotna do konkatenacji słów. Jeśli x i y są słowami takimi, że x jest prefiksem y, to niech <math>z=x^{-1}y \Longleftrightarrow xz=y</math>.


  '''function''' Code(X:set of words):boolean;
  '''function''' Code(X:set of words):boolean;
Linia 69: Linia 69:


{{cwiczenie|3 [Nieskończone kody]|Ćwiczenie 3|
{{cwiczenie|3 [Nieskończone kody]|Ćwiczenie 3|
Definicja kodu nie zakłada że zawiera on skończenie wiele słów. Przykładem nieskończonego kodu jest zbiór <math>\{ 0^n1 | n \in \mathbb{N}\}</math>.  
Definicja kodu nie zakłada, że zawiera on skończenie wiele słów. Przykładem nieskończonego kodu jest zbiór <math>\{ 0^n1 | n \in \mathbb{N}\}</math>.  


Udowodnij że każdy nieskończony kod również spełnia nierówność Krafta.}}
Udowodnij, że każdy nieskończony kod również spełnia nierówność Krafta.}}


{{rozwiazanie|||  
{{rozwiazanie|||  
Linia 84: Linia 84:


{{cwiczenie|4 [Maksymalne kody]|Ćwiczenie 4|
{{cwiczenie|4 [Maksymalne kody]|Ćwiczenie 4|
Załóżmy że X jest maksymalnym zbiorem bezprefiksowym nad alfabetem <math>\Sigma</math> (żaden jego nadzbiór nie jest bezprefiskowy). Czy w takim przypadku nierówność Krafta zamienia się w równość (tzn. <math>\sum_{s \in X} \frac{1}{r^{\ell (s)}} = 1</math>)? }}
Załóżmy, że X jest maksymalnym zbiorem bezprefiksowym nad alfabetem <math>\Sigma</math> (żaden jego nadzbiór nie jest bezprefiskowy). Czy w takim przypadku nierówność Krafta zamienia się w równość (tzn. <math>\sum_{s \in X} \frac{1}{r^{\ell (s)}} = 1</math>)? }}


<div class="mw-collapsible mw-made=collapsible mw-collapsed">
<div class="mw-collapsible mw-made=collapsible mw-collapsed">
Linia 96: Linia 96:
{{rozwiazanie|||  }}
{{rozwiazanie|||  }}
<div class="mw-collapsible-content" style="display:none">
<div class="mw-collapsible-content" style="display:none">
W przypadku skończonego X rzeczywiście tak jest. Niech <math>\ell</math> będzie maksymalną długością słowa w X. Wtedy jeśli nierówność Krafta jest ścisła, to któreś słowo długości <math>\ell</math> nie posiada żadnego prefiksu w X - czyli można X rozszerzyć o to słowo.  
W przypadku skończonego X rzeczywiście tak jest. Niech <math>\ell</math> będzie maksymalną długością słowa w X. Wtedy, jeśli nierówność Krafta jest ścisła, któreś słowo długości <math>\ell</math> nie posiada żadnego prefiksu w X - czyli można X rozszerzyć o to słowo.  


Inna sytuacja ma miejsce gdy X jest nieskończony. Wtedy nawet dla niewielkiej sumy Krafta możemy zapewnić żeby każde słowo było prefiksem jakiegoś słowa w X. Przykładowo dla alfabetu binarnego weźmy zbiór słów <math>W3=\{www: w \in \Sigma^*\}</math>, i usuńmy z niego wszystkie słowa które są prefiksami innych (zauważmy że ta operacja nie usunie wszystkich słów). Tak uzyskany zbiór jest maksymalny bezprefiksowy, a suma Krafta dla niego jest nie większa niż suma Krafta dla W3, wynosząca <math>\sum_{s \in W3} \frac{1}{2^{\ell (s)}} = \sum_{i =1}^{\infty} \frac{2^i}{2^{3i}} = \sum_{i =1}^{\infty} 4^{-i} = \frac{1}{3}</math>.
Inna sytuacja ma miejsce, gdy X jest nieskończony. Wtedy nawet dla niewielkiej sumy Krafta możemy zapewnić, żeby każde słowo było prefiksem jakiegoś słowa w X. Przykładowo, dla alfabetu binarnego weźmy zbiór słów <math>W3=\{www: w \in \Sigma^*\}</math> i usuńmy z niego wszystkie słowa, które są prefiksami innych (zauważmy, że ta operacja nie usunie wszystkich słów). Tak uzyskany zbiór jest maksymalny bezprefiksowy, a suma Krafta dla niego jest nie większa niż suma Krafta dla W3, wynosząca <math>\sum_{s \in W3} \frac{1}{2^{\ell (s)}} = \sum_{i =1}^{\infty} \frac{2^i}{2^{3i}} = \sum_{i =1}^{\infty} 4^{-i} = \frac{1}{3}</math>.
</div>
</div>
</div>
</div>


== Zadania domowe ==
== Zadania domowe ==

Wersja z 18:07, 17 wrz 2006

Ćwiczenia

Ćwiczenie 1 [Definicja kodu]

Mamy dane zbiory:

{0,01,11}
{0,11,10}
{00,01,10}
{00,001,100}
{1,010,110,001,000,101}

Określ:

Które z nich są kodami?
Które są bezprefiskowe?
Które są maksymalne bezprefiksowe?

Rozwiązanie

{{{3}}}


Ćwiczenie 2 [Rozpoznawanie kodów]

Czy istnieje algorytm, który dla dowolnego skończonego zbioru X nad alfabetem Σ stwierdza, czy X jest kodem?

Wskazowka

Rozwiązanie


Ćwiczenie 3 [Nieskończone kody]

Definicja kodu nie zakłada, że zawiera on skończenie wiele słów. Przykładem nieskończonego kodu jest zbiór {0n1|n}.

Udowodnij, że każdy nieskończony kod również spełnia nierówność Krafta.

Rozwiązanie

{{{3}}}


Ćwiczenie 4 [Maksymalne kody]

Załóżmy, że X jest maksymalnym zbiorem bezprefiksowym nad alfabetem Σ (żaden jego nadzbiór nie jest bezprefiskowy). Czy w takim przypadku nierówność Krafta zamienia się w równość (tzn. sX1r(s)=1)?

Wskazowka

Rozwiązanie

Zadania domowe

Zadanie 1 - Kody wyczerpujące alfabet

Mówimy że kod wyczerpuje alfabet, jeśli dowolny wystarczająco długi ciąg liter alfabetu zawsze rozpoczyna się od słowa kodowego (innymi słowy dowolny nieskończony ciąg liter da się rozłożyć na słowa kodowe). Pokaż że dla dowolnego skończonego kodu X dowolne dwa z poniższych warunków implikują trzeci:

  • X jest bezprefiksowy
  • X wyczerpuje alfabet
  • sX1r(s)=1

Pokaż że żaden z tych warunków nie implikuje pozostałych dwóch. Czy założenie o skończoności kodu jest konieczne?


Zadanie 2 - Ważenie monet

Załóżmy że mamy n3 monet, z których jedna jest fałszywa i różni się ciężarem od pozostałych (może być lżejsza lub cięższa). Naszym zadaniem jest znalezienie fałszywej monety i określenie czy jest cięższa czy lżejsza. Do dyspozycji mamy jedynie wagę szalkową, na której szalki możemy kłaść monety. Waga wskazuje zawsze jedną z trzech możliwości: lewa szalka cięższa, prawa szalka cięższa lub równowaga.

  • Jakie jest górne ograniczenie na liczbę monet n przy których może się nam to udać przy użyciu k ważeń?
  • Opracuj strategię pozwalającą rozwiązać zadanie dla trzech ważeń i dwunastu monet.

Wskazówka

{{{3}}}