ALGORYTMY I STRUKTURY DANYCH

Podobne dokumenty
Łańcuchy znakowe. Martyna Stańczyk Katarzyna Więckiewicz. Płock, 17 kwietnia 2014

Zadanie 1. Zmiana systemów. Zadanie 2. Szyfr Cezara. Zadanie 3. Czy liczba jest doskonała. Zadanie 4. Rozkład liczby na czynniki pierwsze Zadanie 5.

II klasa informatyka rozszerzona SZYFROWANIE INFORMACJI

Pracownia Komputerowa wykład V

Zapis liczb binarnych ze znakiem

a) Zapisz wynik działania powyższego algorytmu dla słów ARKA i MOTOR...

Kryptografia systemy z kluczem tajnym. Kryptografia systemy z kluczem tajnym

ARYTMETYKA BINARNA. Dziesiątkowy system pozycyjny nie jest jedynym sposobem kodowania liczb z jakim mamy na co dzień do czynienia.

0 --> 5, 1 --> 7, 2 --> 9, 3 -->1, 4 --> 3, 5 --> 5, 6 --> 7, 7 --> 9, 8 --> 1, 9 --> 3.

B.B. 2. Sumowanie rozpoczynamy od ostatniej kolumny. Sumujemy cyfry w kolumnie zgodnie z podaną tabelką zapisując wynik pod kreską:

EGZAMIN MATURALNY Z INFORMATYKI MAJ 2010 POZIOM PODSTAWOWY CZĘŚĆ I WYBRANE: Czas pracy: 75 minut. Liczba punktów do uzyskania: 20 WPISUJE ZDAJĄCY

Arytmetyka komputera. Na podstawie podręcznika Urządzenia techniki komputerowej Tomasza Marciniuka. Opracował: Kamil Kowalski klasa III TI

Zarys algorytmów kryptograficznych

Zadanie 1. Potęgi (14 pkt)

Pracownia Komputerowa wyk ad V

1. Operacje logiczne A B A OR B

DZIAŁANIA NA UŁAMKACH DZIESIĘTNYCH.

Zadanie 4.3. (0 5) Błąd bezwzględny przybliżonej wartości liczby pi, wyznaczonej z n punktów, definiujemy następująco:

Zastosowanie teorii liczb w kryptografii na przykładzie szyfru RSA

1. Napisz program, który wyświetli Twoje dane jako napis Witaj, Imię Nazwisko. 2. Napisz program, który wyświetli wizytówkę postaci:

Operacje arytmetyczne

Podstawy Informatyki

Zaawansowane algorytmy i struktury danych

LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ. Zasady arytmetyki stałoprzecinkowej oraz operacji arytmetycznych w formatach Q

Bezpieczeństwo systemów komputerowych. Algorytmy kryptograficzne (1) Algorytmy kryptograficzne. Algorytmy kryptograficzne BSK_2003

2 Kryptografia: algorytmy symetryczne

ŁAMIEMY SZYFR CEZARA. 1. Wstęp. 2. Szyfr Cezara w szkole. Informatyka w Edukacji, XV UMK Toruń, 2018

Wykład 4. Określimy teraz pewną ważną klasę pierścieni.

1. Systemy liczbowe. addytywne systemy w których wartośd liczby jest sumą wartości jej znaków cyfrowych.

Wstęp do Informatyki

Algorytmy podstawieniowe

Załóżmy, że musimy zapakować plecak na wycieczkę. Plecak ma pojemność S. Przedmioty mają objętości,,...,, których suma jest większa od S.

Systemy liczbowe używane w technice komputerowej

Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych

5. Rozwiązywanie układów równań liniowych

INŻYNIERIA BEZPIECZEŃSTWA LABORATORIUM NR 2 ALGORYTM XOR ŁAMANIE ALGORYTMU XOR

System Liczbowe. Szesnastkowy ( heksadecymalny)

Laboratorium nr 1 Szyfrowanie i kontrola integralności

wagi cyfry pozycje


Liczby rzeczywiste. Działania w zbiorze liczb rzeczywistych. Robert Malenkowski 1

Luty 2001 Algorytmy (7) 2000/2001

Wykład 2. Informatyka Stosowana. 10 października Informatyka Stosowana Wykład 2 10 października / 42

Samodzielnie wykonaj następujące operacje: 13 / 2 = 30 / 5 = 73 / 15 = 15 / 23 = 13 % 2 = 30 % 5 = 73 % 15 = 15 % 23 =

Wykład 2. Informatyka Stosowana. 9 października Informatyka Stosowana Wykład 2 9 października / 42

SYSTEMY LICZBOWE. Zapis w systemie dziesiętnym

RSA. R.L.Rivest A. Shamir L. Adleman. Twórcy algorytmu RSA

Kryptologia przykład metody RSA

Kod U2 Opracował: Andrzej Nowak

Przykład. Przykład. Litera Homofony C F H I M

Wstęp do informatyki- wykład 2

SYSTEMY LICZBOWE 275,538 =

Programowanie w Baltie klasa VII

Cyfrowy zapis informacji

Arytmetyka stałopozycyjna

Urządzenia Techniki. Klasa I TI. System dwójkowy (binarny) -> BIN. Przykład zamiany liczby dziesiętnej na binarną (DEC -> BIN):

EGZAMIN MATURALNY Z INFORMATYKI

n = p q, (2.2) przy czym p i q losowe duże liczby pierwsze.

Programowanie 2 - Tablice i łańcuchy

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Systemy zapisu liczb.

Znaki w tym systemie odpowiadają następującym liczbom: I=1, V=5, X=10, L=50, C=100, D=500, M=1000

1. Powtórka ze szkoły. Wykład: (4 godziny), ćwiczenia: , kolokwium nr 1:

Teoria liczb. Magdalena Lemańska. Magdalena Lemańska,

Kod uzupełnień do dwóch jest najczęściej stosowanym systemem zapisu liczb ujemnych wśród systemów binarnych.

EGZAMIN MATURALNY Z INFORMATYKI

Metoda znak-moduł (ZM)

4. Postęp arytmetyczny i geometryczny. Wartość bezwzględna, potęgowanie i pierwiastkowanie liczb rzeczywistych.

EGZAMIN MATURALNY Z INFORMATYKI MAJ 2010 POZIOM ROZSZERZONY CZĘŚĆ I WYBRANE: Czas pracy: 90 minut. Liczba punktów do uzyskania: 20 WPISUJE ZDAJĄCY

MADE IN CHINA czyli SYSTEM RESZTOWY

LICZBY PIERWSZE. Jan Ciurej Radosław Żak

Zajęcia 4 procedury i funkcje

12. Wprowadzenie Sygnały techniki cyfrowej Systemy liczbowe. Matematyka: Elektronika:

0 + 0 = 0, = 1, = 1, = 0.

Projekt AS KOMPETENCJI jest współfinansowany przez Unię Europejską w ramach środków Europejskiego Funduszu Społecznego

Pracownia Komputerowa wykład IV

Algorytm. a programowanie -

Algorytmy podstawieniowe

LICZBY PIERWSZE. 14 marzec Jeśli matematyka jest królową nauk, to królową matematyki jest teoria liczb. C.F.

CIĄGI wiadomości podstawowe

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 2 WSTĘP DO INFORMATYKI

Ułamki zwykłe. mgr Janusz Trzepizur

Przykładowe zadania z teorii liczb

Algorytmy asymetryczne

PROBLEMATYKA BEZPIECZEŃSTWA SIECI RADIOWYCH Algorytm szyfrowania AES. Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Programowanie zaawansowane FM i IN 2017/2018

2 Arytmetyka. d r 2 r + d r 1 2 r 1...d d 0 2 0,

Bezpieczeństwo systemów komputerowych. Algorytmy kryptograficzne. Algorytmy kryptograficzne (1) Algorytmy kryptograficzne. Szyfry przestawieniowe

Treść wykładu. Pierścienie wielomianów. Dzielenie wielomianów i algorytm Euklidesa Pierścienie ilorazowe wielomianów

Bezpieczeństwo danych i przykłady kryptoanalizy prostych szyfrów. Błędy szyfrowania. Typy ataku kryptoanalitycznego

L6.1 Systemy liczenia stosowane w informatyce

Rozwiązywanie układów równań liniowych metody dokładne Materiały pomocnicze do ćwiczeń z metod numerycznych

Zastosowania arytmetyki modularnej. Zastosowania arytmetyki modularnej

EGZAMIN MATURALNY Z INFORMATYKI

Arkusz zawiera informacje prawnie chronione do momentu rozpocz cia egzaminu.

2. Liczby pierwsze i złożone, jednoznaczność rozkładu na czynniki pierwsze, największy wspólny dzielnik, najmniejsza wspólna wielokrotność. (c.d.

Wykład 1. Na początku zajmować się będziemy zbiorem liczb całkowitych

Podstawy systemów kryptograficznych z kluczem jawnym RSA

Arytmetyka liczb binarnych

Zamiana porcji informacji w taki sposób, iż jest ona niemożliwa do odczytania dla osoby postronnej. Tak zmienione dane nazywamy zaszyfrowanymi.

Transkrypt:

ALGORYTMY I STRUKTURY DANYCH Paulina Wojtalewicz i Aleksandra Milczarek

TEMATY, KTÓRYMI SIĘ ZAJMIEMY, TO : Wyszukiwanie palindromów Szyfr Cezara Szyfry przestawieniowe Dodawanie dużych liczb Mnożenie dużych liczb, Ciekawi?- (założymy się, że tak ), wszystkie te tematy przybliżymy Wam za chwilę

Wyszukiwanie palindromów

WYSZUKIWANIE PALINDROMÓW Problem W łańcuchu s znaleźć wszystkie palindromy o długości większej od 1. Przez palindrom (ang. palindrome) rozumiemy łańcuch znakowy s, który czyta się tak samo w obu kierunkach. Przykład: ABBCBBA jest palindromem ABBCABA nie jest palindromem Palindromy pojawiają się w genetyce (łańcuchy DNA, RNA), w tekstach, muzyce, matematyce, geometrii, fizyce itd. Stąd duże zainteresowanie informatyków w efektywnych algorytmach ich znajdowania. W badaniach genetycznych często szuka się tzw. przybliżonych palindromów (ang. aproximate palindromes), tzn. palindromów, w których do k-znaków może być błędnych, czyli nie pasujących do dokładnego palindromu (ang. exact palindrome). Takie palindromy występują w łańcuchach DNA, w których wystąpiły różnego rodzaju błędy genetyczne. Problemem palindromów przybliżonych nie zajmujemy się w tym opracowaniu.

WYSZUKIWANIE PALINDROMÓW Wprowadźmy symbol s R, który oznacza łańcuch znakowy o odwróconej kolejności znaków w stosunku do łańcucha s. Przykład: s = ABCD s R = DCBA Łańcuch s jest palindromem, jeśli da się rozłożyć na dwa podłańcuchy w i w R wg poniższego schematu: s = ww R palindrom parzysty (ang. even palindrome), lub s = wxw R palindrom nieparzysty (ang. odd palindrome), gdzie X jest dowolnym symbolem alfabetu.

WYSZUKIWANIE PALIDROMÓW Rozwiązanie nr 1 Pierwszy algorytm wyszukiwania palindromów jest algorytmem naiwnym. Rozkłada on dany łańcuch znakowy s na wszystkie możliwe podłańcuchy p o długości nie mniejszej niż 2 znaki i sprawdza następnie, czy dadzą się przedstawić w postaci ww R lub wxw R. Sprawdzenie polega na porównywaniu znaków od początku i od końca podłańcucha. W tym celu wykorzystuje się dwa indeksy. Jeden z nich ustawia się na pierwszym znaku podłańcucha p, a drugi na ostatnim. Następnie porównujemy wskazywane przez te indeksy znaki podłańcucha p. Jeśli znaki są różne, to podłańcuch p nie jest palindromem. Jeśli porównywane znaki są równe, to indeksy przesuwamy lewy w prawo, a prawy w lewo. Jeśli indeksy się miną, to zachodzi jedna z dwóch równości:

WYSZUKIWANIE PALIDROMÓW p = ww R, lub p = wxw R W takim przypadku p jest palindromem. Wyszukanie wszystkich palindromów zawartych w łańcuchu s proponowaną metodą posiada sześcienną klasę złożoności obliczeniowej O(n 3 ), gdzie n jest długością łańcucha s.

WYSZUKIWANIE PALIDROMÓW Algorytm naiwny wyszukiwania palindromów Wejście: s łańcuch tekstowy.wyjście: Wszystkie palindromy zawarte w łańcuchu s. Elementy pomocnicze: i,j indeksy znaków w łańcuchu s, i,j N Nn długość łańcucha s, n N Ni P prawy indeks, i P N Ni L lewy indeks, i L N

WYSZUKIWANIE PALINDROMÓW Lista kroków

Szyfr Cezara

SZYFR CEZARA Problem Opracować algorytm szyfrujący i deszyfrujący dla szyfru Cezara Szyfrowanie tekstów (ang. text encryption) ma na celu ukrycie ważnych informacji przed dostępem do nich osób niepowołanych. Historia kodów szyfrujących sięga czasów starożytnych. Już tysiące lat temu egipscy kapłani stosowali specjalny system hieroglifów do szyfrowania różnych tajnych wiadomości. Szyfr Cezara (ang. Ceasar's Code lub Ceasar's Cipher) jest bardzo prostym szyfrem podstawieniowym (ang. substitution cipher). Szyfry podstawieniowe polegają na zastępowaniu znaków tekstu jawnego (ang. plaintext) innymi znakami przez co zawarta w tekście informacja staje się nieczytelna dla osób niewtajemniczonych. Współcześnie szyfrowanie stanowi jedną z najważniejszych dziedzin informatyki to dzięki niej stał się możliwy handel w Internecie, funkcjonują banki ze zdalnym dostępem do kont, powstał podpis elektroniczny oraz bezpieczne łącza transmisji danych. Przykładów zastosowania jest bez liku i dokładne omówienie tej dziedziny wiedzy leży daleko poza możliwościami tego artykułu.

SZYFR CEZARA Szyfr Cezara został nazwany na cześć rzymskiego imperatora Juliusza Cezara, który stosował ten sposób szyfrowania do przekazywania informacji o znaczeniu wojskowym. Szyfr polega na zastępowaniu liter alfabetu A...Z literami leżącymi o trzy pozycje dalej w alfabecie: Ostatnie trzy znaki X, Y i Z nie posiadają następników w alfabecie przesuniętych o trzy pozycje. Dlatego umawiamy się, iż alfabet "zawija się" i za literką Z następuje znów litera A. Teraz bez problemu znajdziemy następniki X A, Y B i Z C.

SZYFR CEZARA Przykład: Zaszyfrować zdanie: NIEPRZYJACIEL JEST BARDZO BLISKO. Poszczególne literki tekstu jawnego zastępujemy literkami szyfru Cezara zgodnie z powyższą tabelką kodu. Spacje oraz inne znaki nie będące literami pozostawiamy bez zmian: NIEPRZYJACIEL JEST BARDZO BLISKO QLHSUCBMDFLHO MHVW EDUGCR EOLVNR Deszyfrowanie tekstu zaszyfrowanego kodem Cezara polega na wykonywaniu operacji odwrotnych. Każdą literę kodu zamieniamy na literę leżącą o trzy pozycje wcześniej w alfabecie.

SZYFR CEZARA Podobnie jak poprzednio trzy pierwsze znaki szyfru Cezara nie posiadają bezpośrednich odpowiedników liter leżących o trzy pozycje wcześniej, ponieważ alfabet rozpoczyna się dopiera od pozycji literki D. Rozwiązaniem jest ponowne "zawinięcie" alfabetu tak, aby przed literą A znalazły się trzy ostatnie literki X, Y i Z. Do wyznaczania kodu literek przy szyfrowaniu i deszyfrowaniu posłużymy się operacjami modulo. Operacja modulo jest resztą z dzielenia danej liczby przez moduł. Wynik jest zawsze mniejszy od modułu. U nas moduł będzie równy 26, ponieważ tyle mamy liter alfabetu. Jeśli c jest kodem ASCII dużej litery alfabetu (rozważamy tylko teksty zbudowane z dużych liter), to szyfrowanie kodem Cezara polega na wykonaniu następującej operacji arytmetycznej: c = 65 + (c - 62) mod 26 Deszyfrowanie polega na zamianie kodu wg wzoru: c = 65 + (c - 42) mod 26

SZYFR CEZARA Algorytm szyfrowania tekstu kodem Cezara Wejście Łańcuch tekstowy swyjście: Łańcuch tekstowy s zaszyfrowany kodem Cezara Elementy pomocnicze: i indeks, i N kod(x) zwraca kod litery x znak(x) zamienia kod x na odpowiadający mu znak ASCII

SZYFR CEZARA Lista kroków

Szyfry przestawieniowe

SZYFRY PRZESTAWIENIOWE Problem Opracować algorytm szyfrujący i deszyfrujący za pomocą szyfru przestawieniowego Szyfr przestawieniowy (ang. transposition cifer) polega na zamianie położenia znaków tworzących tekst, przez co wiadomość staje się nieczytelna dla niewtajemniczonego odbiorcy. W zaszyfrowanym tekście znajdują się wszystkie znaki tekstu jawnego. Zaczniemy od najprostszych szyfrów przestawieniowych.

SZYFRY PRZESTAWIENIOWE Przestawianie dwóch sąsiednich liter W tym rodzaju szyfru tekst dzielimy na pary znaków. Następnie w każdej parze zamieniamy ze sobą litery, Przykład:

SZYFRY PRZESTAWIENIOWE Tekst da się podzielić na pary, jeśli zawiera parzystą liczbę znaków. W przeciwnym razie ostatnia para jest niepełna. W takiej niepełnej parze liter oczywiście nie zamieniamy miejscami. Zwróć uwagę, iż ten szyfr jest symetryczny. Jeśli poddamy szyfrowaniu tekst poprzednio zaszyfrowany, to otrzymamy z powrotem tekst jawny.

SZYFRY PRZESTAWIENIOWE Algorytm szyfrowania przestawieniowego ze zamianą liter w parach Wejście Łańcuch tekstowy s, który zawiera tekst poddawany szyfrowaniu lub deszyfrowaniu Wyjście: Zaszyfrowany łańcuch s Elementy pomocnicze: i indeks, i N

SZYFRY PRZESTAWIONE Lista kroków:

Dodawanie dużych liczb

DODAWANIE DUŻYCH LICZB Problem Dodać do siebie dwie dowolnie duże, dodatnie liczby całkowite, przedstawione w postaci łańcucha cyfr. Problem rozwiążemy w sposób szkolny (profesjonalne algorytmy wymagają innego podejścia). Dodawane liczby musimy wyrównać do ostatnich cyfr: 21638626396236623668969866232198 95832808595775579737342988203408934789797363

DODAWANIE DUŻYCH LICZB Dodawanie rozpoczniemy od ostatnich cyfr łańcuchów. Stosujemy przy tym poznane w szkole podstawowej zasady dodawania dwóch liczb. Dodajemy ostatnie cyfry. W łańcuchu wynikowym umieszczamy ostatnią cyfrę wyniku. Natomiast pierwsza cyfra wyniku staje się przeniesieniem do następnej pozycji:

DODAWANIE DUŻYCH LICZB W następnym kroku dodajemy do siebie dwie kolejne cyfry oraz przeniesienie. Do łańcucha wynikowego wpisujemy na przedostatniej pozycji ostatnią cyfrę wyniku, a pierwsza cyfra wyniku staje się przeniesieniem na dalszą pozycję.

DODAWANIE DUŻYCH LICZB Jeśli w jednym z łańcuchów skończą się zbyt wcześnie cyfry, to przyjmujemy, że posiada on resztę cyfr równych 0. Sprowadza się to wtedy do dodawania przeniesień do pozostałych cyfr drugiego łańcucha. Gdy wszystkie cyfry zostaną przetworzone, a przeniesienie ma wartość większą od 0, to umieszczamy je na początku łańcucha wynikowego jako pierwszą cyfrę wyniku. Przy dodawaniu cyfr musimy pamiętać, że są one przechowywane w łańcuchach w postaci kodów ASCII: Dlatego w celu otrzymania wartości cyfry należy od jej kodu odjąć 48, a przy otrzymywaniu kodu znaku z wartości cyfry należy do niej dodać 48

DODAWANIE DUŻYCH LICZB

DODAWANIE DUŻYCH LICZB

Mnożenie dużych liczb

MNOŻENIE DUŻYCH LICZB Problem 1 Pomnożyć dowolnie dużą nieujemną liczbę całkowitą przez nieujemną liczbę całkowitą względnie małą, np. 32 bitową. Naszym zadaniem jest znalezienie iloczynu: W=a*b gdzie: a liczba duża, b liczba mała Liczba mała b rozkłada się na sumę potęg liczby 2 mnożonych przez kolejne bity b i liczby b:

MNOŻENIE DUŻYCH LICZB

MNOŻENIE DUŻYCH LICZB W powyższym wzorze b i to i-ty bit mniejszej liczby. Natomiast kolejne iloczyny 2 i a bardzo łatwo oblicza się dynamicznie za pomocą dodawania, ponieważ, co łatwo zauważyć, każdy kolejny iloczyn jest dwa razy większy od poprzedniego.: Iloczyny dodajemy do wyniku W, jeśli odpowiedni bit b i jest równy 1. W całym tym postępowaniu wykonywane są tylko dodawania dużych liczb. Bity z liczby b możemy łatwo wydzielać za pomocą operacji koniunkcji i przesuwów

MNOŻENIE DUŻYCH LICZB

MNOŻENIE DUŻYCH LICZB

Dziękujemy za uwagę