Skip to content

Instantly share code, notes, and snippets.

@T3sT3ro
Last active May 27, 2019 10:23
Show Gist options
  • Save T3sT3ro/bf3fe008056f8882010c49bfda819324 to your computer and use it in GitHub Desktop.
Save T3sT3ro/bf3fe008056f8882010c49bfda819324 to your computer and use it in GitHub Desktop.

Lista 2 ćwiczenia

1. minimalna ramka

2*2500/10^8 * 10Mb = 500 bit

Mamy rundowy protokół ALOHA we współdzielonym kanale (w każdej rundzie jeden z n uczestników próbuje wysłać ramkę z prawdopodobieństwem p). Jakie jest P(p, n), że jednej stacji uda się nadać (nie wystąpi kolizja)? + Pokazać że P maksymalne dla p=1/n. + Ile wynosi P(1/n, n) dla n->∞ ?

Po pierwsze - ALOHA działa tak, że stacje wysyłają bez uprzedniego sprawdzania czy ktoś nadaje i sprawdzania czy będzie kolizja (np. stacje naziemne transmitujące do satelity + stacje się nawzajem nie widzą). Czas dzielimy na rundy(sloty) Założenie jest takie, że mamy dużo senderów nadajacych rzadko + pakiety mają takie same długości. Niech T to czas potrzebny na wysłania jednego pakietu (czyli też jeden slot czasowy). Wysyłamy pakiet/ slot czasowy z prawdopodobieństwem p.

Skoro per runda każdy chce wysłać z prawdopodobieństwem p, to szansa, że jeden wyśle a pozostałe nie wyślą jest P=np(1-p)⁽ⁿ⁻¹⁾. To teraz da p=1/n mamy P=(1-1/n)⁽ⁿ⁻¹⁾=(1-1/n)ⁿ*(1-1/n)⁻¹ → e dla n → ∞. Żeby pokazać, że w p=1/n jest maximum, wystarczy sprawdzić, że δ/δx P(p=1/n)=0, a druga pochodna to już na wiarę że to maksimum. Ogólnie to łatwe.

Po pierwsze - jest sobie algorytm Exponential Backoff w CSMA/CD. Po i kolizjach losowana jest liczba z przedziału 0->(2ⁱ-1) tzw. slot time, która oznacza, jaki czas stacja będzie musiala odczekać, zanim powtórnie rozpocznie nadawanie. Dostosowuje się to więc do natężenia w sieci - wraz ze wzrostem liczby kolizji liczba losowana jest na szerszym przedziale. i jest ograniczone zazwyczaj do jakiś 10-16.

I teraz powracając do naszego problemu: wyobraźmy sobie że stacje A i B mają do wysłania pakiety, więc biją się o łącze. A wygrywa pierwszy pakiet. A skończyło nadawać, więc B próbuje wysłać ponownie, ale A ma do wysłania drugi pakiet, więc wybiera opóźnienie na przedziale <2, ale jednocześnie B musi losować na przedziale <4, co oznacza, że A ma większe szanse na wygranie ( i załóżmy, że tak się dzieje). Po zakończeniu transmisji, A i B próbują znowu, A jest znów na pierwszym podejściu dla 3-go pakietu, a B na 3-cim podejściu do 1-go pakietu, dlatego A losuje na <2, a B ma <8. Za każdym razem gdy B przegyrwa, jego prawdopodobieństwo wygrania kolejnego maleje dwukrotnie. Taka sytuacja jest prawdopodobna i w praktyce często zdaża się, że B przegrywa wszystkie swoje próby zanim dojdzie do maxa (16). Prawdopodobieństwo tego jest bardzo duże już po 3-4 nieudanych próbach. Wtedy to B wywala pakiet do śmieci i próbuje dla następnego z licznikiem zresetowanym do początkowej wartości (<2).

4. CRC 1

wiadomość 1010 (m=x^3+x), CRC ma G1=x^2+x+1, albo G2=x^7 +1.

  1. r=2 => xʳM=x⁵+x³=G(x³-x²+x)+x => S=0b10
  2. r=7 => xʳM=x¹⁰+x⁸=G(x³+x)+x³+x => S=0b0001010

gdzie r to stpień wielomianu G, S to suma kontrolna.

5. RCR 2

gdzie M to wiadomość, G to nasz wielomian a S to suma kontrolna (małymi oznaczam bitowe repr.)

CRC-1, G=x+1 indukcja:

  • podstawa dla m=1 ⇒ s=0 i m=0 ⇒ s=1
  • załóżmy, że dla m i g działa gdzie m conajwyżej stopnia jakiegoś
  • teraz przedłużamy m:
    • 0..m ⇒ nic się nie zmienia więc OK
    • 1..m ⇒ chcemy pokazać CRC(11..m) = CRC(m) i CRC(10..m) = !CRC(m). patrzymy na pierwszy bit m:
      • m = 1..m' (11..m) => CRC(11..m) = !CRC(1..m) = CRC(m)
      • m = 0..m' (10..m) => CRC(10..m) = !CRC(0..m) = CRC(1..m) = !CRC(m)

6. CRC 3

G st. n zawiera x⁰. Pokazać, że jeśli wybierzemy dowolny odcinek długości n z wiadomości i dowolnie go zmodyfikujemy, to zostanie to wykryte. Czy będzie działać, jeśli G nie ma x⁰ ?

  • G = xⁿ+...+1, E(rror) = xⁱ(αₙxⁿ + ... + α₁x) = xⁱ⁺¹(αₙxⁿ⁻¹ + ... + α₁). Mamy G ⟂ xⁱ⁺¹ AND G ∤ (αₙxⁿ⁻¹ + ... + α₁) bo ma mniejszy stopień.
  • G = xⁿ+...+0 = x(xⁿ⁻¹+...). G ∣ E jeśli E = xⁱ(xⁿ⁻¹+...), co może nastąpić.

7. Hamming

img

mamy kodowanie bitów danych d na d i p(arzystości). Kodowanie jest jak poniżej:

0->00 --
1->70 --
2->4C ++
3->3C ++
4->2A
5->5A
6->66
7->16
8->69
9->19
A->25
B->55
C->43
D->33
E->0F
F->7F

Patrząc na sufiksy widać, że jeśli się różnią zawsze o 2 i dodatkowo w tych grupach różniących się o 2 prefiksy też są zawsze inne (grupy ++ i --). wewnątrz grup natomiast można zauważyć, że różnią się zawsze o ≥3. W Związku z tym przekłamanie jednego bitu zawsze można prześledzić do dobrego kodu.

8. CRC 4

G = x^3+x+1
E = x^i(x^[6|5|4]+1), dla mniejszych stopni jest prosto bo stopnie są ≤.
x^i ⟂ G
W=x⁶+1 = (x^3+x+1)^2 + x^2 => G ∤ W
W=x⁵+1 = (x^2+1)(x^3+x+1)+(x^2+x)=> G ∤ W
W=x^4+1 = x(x^3+x+1) + (x^2+x+1) => G ∤ W

9. CRC 5

10. kolizje hashowania

Dla 2^(m/2) funkcja h(x) zwraca m-bitową liczbę (losową z ppd jednostajnym). Zacznijmy od tego, że mamy paradoks dnia urodzin. ppd mapowania na różne liczby jest 1*(1-1/2ᵐ)(1-2/2ᵐ)...*(1-(2^(m/2)-1)/2ᵐ) co się upraszcza do 𝚷 P' = i=0→2^(m/2)-1 (1-i/2ᵐ). Prawdopodobieństwo tego, że będzie kolizja jest więc P=1-P'. trzeba tylko pokazać, że to jest P>0, aka P'<1. no i można to ograniczać z faktu, że 1-x<e^-x dla dowonego x∈R. wtedy szereg sumuje się do e^-n(n-1)/2k, gdzie n=2^(m/2) a k = 2^m. Można z tego wyciągnąć, że lim m->∞ jest wtedy 1/sqrt(e) a dla m=1 to jest jakieś 0.8... więc nice. + funkcja monotoniczna.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment