Algorytmy i struktury danych. wykład 9

Podobne dokumenty
Metody numeryczne Technika obliczeniowa i symulacyjna Sem. 2, EiT, 2014/2015

Liczby zmiennoprzecinkowe i błędy

Obliczenia Naukowe. Wykład 12: Zagadnienia na egzamin. Bartek Wilczyński

Egzamin z Metod Numerycznych ZSI, Egzamin, Gr. A

BŁĘDY OBLICZEŃ NUMERYCZNYCH

Haszowanie (adresowanie rozpraszające, mieszające)

Met Me ody numer yczne Wykład ykład Dr inż. Mic hał ha Łan Łan zon Instyt Ins ut Elektr Elektr echn iki echn i Elektrot Elektr echn olo echn

Transformata Fouriera

Metody numeryczne. Postać zmiennoprzecinkowa liczby. dr Artur Woike. Arytmetyka zmiennoprzecinkowa. Uwarunkowanie zadania.

Metody numeryczne I Równania nieliniowe

Wielkości liczbowe. Wykład z Podstaw Informatyki dla I roku BO. Piotr Mika

REPREZENTACJA LICZBY, BŁĘDY, ALGORYTMY W OBLICZENIACH

Wielkości liczbowe. Wykład z Podstaw Informatyki. Piotr Mika

Wprowadzenie do metod numerycznych. Krzysztof Patan

REPREZENTACJA LICZBY, BŁĘDY, ALGORYTMY W OBLICZENIACH

Metoda znak-moduł (ZM)

Technologie Informacyjne Wykład 4

Zestaw 3. - Zapis liczb binarnych ze znakiem 1

Szybka transformacja Fouriera (FFT Fast Fourier Transform)

Zaawansowane algorytmy i struktury danych

EGZAMIN - Wersja A. ALGORYTMY I STRUKTURY DANYCH Lisek89 opracowanie kartki od Pani dr E. Koszelew

Podstawy Informatyki. Metody dostępu do danych

Metody numeryczne. Sformułowanie zagadnienia interpolacji

Haszowanie. dr inż. Urszula Gałązka

Algorytmy i struktury danych. Wykład 4 Tablice nieporządkowane i uporządkowane

9. Dyskretna transformata Fouriera algorytm FFT

Podstawy Informatyki

Algorytmy i struktury danych. Wykład 6 Tablice rozproszone cz. 2

INFORMATYKA ELEMENTY METOD NUMERYCZNYCH.

Obliczenia Naukowe. O arytmetyce komputerów, Czyli jak nie dać się zaskoczyć. Bartek Wilczyński 29.

Teoretyczne Podstawy Informatyki

Metody numeryczne w przykładach

Metody numeryczne. Janusz Szwabiński. nm_slides.tex Metody numeryczne Janusz Szwabiński 2/10/ :02 p.

struktury danych dla operacji słownikowych

Ataki na RSA. Andrzej Chmielowiec. Centrum Modelowania Matematycznego Sigma. Ataki na RSA p. 1

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 5 Liczby w komputerze

Lista, Stos, Kolejka, Tablica Asocjacyjna

Tablice z haszowaniem

koordynator modułu dr hab. Michał Baczyński rok akademicki 2012/2013

Metody numeryczne Wykład 6

Metody numeryczne. Sformułowanie zagadnienia interpolacji

ELEMENTY ANALIZY NUMERYCZNEJ ELEMENTY ANALIZY NUMERYCZNEJ. Egzamin pisemny zestaw 1 26 czerwca 2017 roku

Aproksymacja funkcji a regresja symboliczna

DOPASOWYWANIE KRZYWYCH

Zwykle liczby rzeczywiste przedstawia się w notacji naukowej :

Klasa 1 technikum. Poniżej przedstawiony został podział wymagań na poszczególne oceny szkolne:

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

Mathcad c.d. - Macierze, wykresy 3D, rozwiązywanie równań, pochodne i całki, animacje

Technologie Informacyjne

Przedmiot: Urządzenia techniki komputerowej Nauczyciel: Mirosław Ruciński

Sylabus modułu: Matematyczne podstawy informatyki (kod modułu:03-mo2n-12-mpln)

ELEMENTY ANALIZY NUMERYCZNEJ ELEMENTY ANALIZY NUMERYCZNEJ. Egzamin pisemny zestaw 1 24 czerwca 2019 roku

3. Interpolacja. Interpolacja w sensie Lagrange'a (3.1) Dana jest funkcja y= f x określona i ciągła w przedziale [a ;b], która

Zwięzły kurs analizy numerycznej

METODY NUMERYCZNE. Po co wprowadzamy liczby w formacie zmiennoprzecinkowym (floating point)?

Algorytmy i złożoności Wykład 5. Haszowanie (hashowanie, mieszanie)

Metody Numeryczne Wykład 4 Wykład 5. Interpolacja wielomianowa

Struktury danych (I): kolejka, stos itp.

Tablice z haszowaniem

Analiza numeryczna kolokwium2a-15grudnia2005

Interpolacja i modelowanie krzywych 2D i 3D

METODY NUMERYCZNE. Wykład 1. Wprowadzenie do metod numerycznych

Wykorzystanie programów komputerowych do obliczeń matematycznych, cz. 2/2

Pracownia Komputerowa wykład VI

Obliczenia iteracyjne

METODY NUMERYCZNE. Wykład 1. Wprowadzenie do metod numerycznych

Bardzo łatwa lista powtórkowa

Technika audio część 2

Kryptografia. z elementami kryptografii kwantowej. Ryszard Tanaś Wykład 7

Metody numeryczne. materiały do wykładu dla studentów. 1. Teoria błędów, notacja O

Liczby rzeczywiste są reprezentowane w komputerze przez liczby zmiennopozycyjne. Liczbę k można przedstawid w postaci:

Przekształcenia widmowe Transformata Fouriera. Adam Wojciechowski

Aproksymacja. funkcji: ,a 2. ,...,a m. - są funkcjami bazowymi m+1 wymiarowej podprzestrzeni liniowej X m+1

TEORETYCZNE PODSTAWY INFORMATYKI

BIBLIOTEKA PROGRAMU R - BIOPS. Narzędzia Informatyczne w Badaniach Naukowych Katarzyna Bernat

Teoria przetwarzania A/C i C/A.

Egzamin z Metod Numerycznych ZSI, Grupa: A

Politechnika Świętokrzyska. Laboratorium. Cyfrowe przetwarzanie sygnałów. Ćwiczenie 6. Transformata cosinusowa. Krótkookresowa transformata Fouriera.

PODSTAWY AUTOMATYKI. MATLAB - komputerowe środowisko obliczeń naukowoinżynierskich - podstawowe operacje na liczbach i macierzach.

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

Zaawansowane metody numeryczne

Metody numeryczne Wykład 7

Arytmetyka stało i zmiennoprzecinkowa

LICZBY ZMIENNOPRZECINKOWE

Wstęp do programowania. Reprezentacje liczb. Liczby naturalne, całkowite i rzeczywiste w układzie binarnym

METODY NUMERYCZNE. Wykład 3. Plan. Aproksymacja Interpolacja wielomianowa Przykłady. dr hab.inż. Katarzyna Zakrzewska, prof.agh. Met.Numer.

ARCHITEKTURA KOMPUTERÓW Liczby zmiennoprzecinkowe

Wykorzystanie programów komputerowych do obliczeń matematycznych, cz. 2/2

Zastowowanie transformacji Fouriera w cyfrowym przetwarzaniu sygnałów

WYKŁAD 9 METODY ZMIENNEJ METRYKI

Wykład z Technologii Informacyjnych. Piotr Mika

Układy stochastyczne

Wykład 4. Tablice z haszowaniem

Metody Numeryczne w Budowie Samolotów/Śmigłowców Wykład I

METODY NUMERYCZNE. Wykład 2. Analiza błędów w metodach numerycznych. Met.Numer. wykład 2 1

1 Równania nieliniowe

Podstawy programowania. Wykład: 13. Rekurencja. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Układy równań liniowych. Krzysztof Patan

Metody numeryczne. materiały do wykładu dla studentów. 7. Całkowanie numeryczne

Optymalizacja ciągła

Transkrypt:

Plan wykładu:. Algorytmy numeryczne.

Funkcja skrótu jest to funkcja H, która dla do dowolnej informacji m przyporządkowuje niespecyficzną wartość h, mającą cechy pseudolosowe. Cechy: skróty są zazwyczaj stałej długości (mają tą samą liczbę znaków), skrót jednoznacznie identyfikuje informację, dla której został utworzony.

Funkcja skrótu jest to funkcja H, która dla do dowolnej informacji m przyporządkowuje niespecyficzną wartość h, mającą cechy pseudolosowe. Cechy: skróty są zazwyczaj stałej długości (mają tą samą liczbę znaków), skrót jednoznacznie identyfikuje informację, dla której został utworzony. Kolizja dla funkcji skrótu H to taka para różnych wiadomości m 1 i m 2, dla których wartość funkcji skrótu H jest identyczna, tj. H(m 1 ) = H(m 2 ).

Funkcja skrótu jest to funkcja H, która dla do dowolnej informacji m przyporządkowuje niespecyficzną wartość h, mającą cechy pseudolosowe. Cechy: skróty są zazwyczaj stałej długości (mają tą samą liczbę znaków), skrót jednoznacznie identyfikuje informację, dla której został utworzony. Kolizja dla funkcji skrótu H to taka para różnych wiadomości m 1 i m 2, dla których wartość funkcji skrótu H jest identyczna, tj. H(m 1 ) = H(m 2 ). Własności funkcji skrótu ze względu na kolizje: brak możliwości łatwego generowania nowych kolizji, odporność na znalezienie drugiego przeciwobrazu, odporność na znalezienie przeciwobrazu.

Funkcja skrótu jest to funkcja H, która dla do dowolnej informacji m przyporządkowuje niespecyficzną wartość h, mającą cechy pseudolosowe. Cechy: skróty są zazwyczaj stałej długości (mają tą samą liczbę znaków), skrót jednoznacznie identyfikuje informację, dla której został utworzony. Kolizja dla funkcji skrótu H to taka para różnych wiadomości m 1 i m 2, dla których wartość funkcji skrótu H jest identyczna, tj. H(m 1 ) = H(m 2 ). Własności funkcji skrótu ze względu na kolizje: brak możliwości łatwego generowania nowych kolizji, odporność na znalezienie drugiego przeciwobrazu, odporność na znalezienie przeciwobrazu. Oznacza, że możliwość znalezienia kolizji dla dwóch różnych wiadomości jest znikomo mała.

Funkcja skrótu jest to funkcja H, która dla do dowolnej informacji m przyporządkowuje niespecyficzną wartość h, mającą cechy pseudolosowe. Cechy: skróty są zazwyczaj stałej długości (mają tą samą liczbę znaków), skrót jednoznacznie identyfikuje informację, dla której został utworzony. Kolizja dla funkcji skrótu H to taka para różnych wiadomości m 1 i m 2, dla których wartość funkcji skrótu H jest identyczna, tj. H(m 1 ) = H(m 2 ). Własności funkcji skrótu ze względu na kolizje: brak możliwości łatwego generowania nowych kolizji, odporność na znalezienie drugiego przeciwobrazu, odporność na znalezienie przeciwobrazu. Oznacza, że możliwość znalezienia kolizji dla dwóch różnych wiadomości jest znikomo mała. Second preimage resistance dla danej wiadomości nie jest znana szybka metoda znalezienia innej różnej wiadomości, takiej, że ich skróty są sobie równe.

Funkcja skrótu jest to funkcja H, która dla do dowolnej informacji m przyporządkowuje niespecyficzną wartość h, mającą cechy pseudolosowe. Cechy: skróty są zazwyczaj stałej długości (mają tą samą liczbę znaków), skrót jednoznacznie identyfikuje informację, dla której został utworzony. Kolizja dla funkcji skrótu H to taka para różnych wiadomości m 1 i m 2, dla których wartość funkcji skrótu H jest identyczna, tj. H(m 1 ) = H(m 2 ). Własności funkcji skrótu ze względu na kolizje: brak możliwości łatwego generowania nowych kolizji, odporność na znalezienie drugiego przeciwobrazu, odporność na znalezienie przeciwobrazu. Oznacza, że możliwość znalezienia kolizji dla dwóch różnych wiadomości jest znikomo mała. Preimage resistance dla skrótu h nie istnieje żadna szybka metoda znalezienia wiadomości m, takiej, że H(m) = h (własność najsłabsza). Second preimage resistance dla danej wiadomości nie jest znana szybka metoda znalezienia innej różnej wiadomości, takiej, że ich skróty są sobie równe.

Funkcja skrótu jest to funkcja H, która dla do dowolnej informacji m przyporządkowuje niespecyficzną wartość h, mającą cechy pseudolosowe. Cechy: skróty są zazwyczaj stałej długości (mają tą samą liczbę znaków), skrót jednoznacznie identyfikuje informację, dla której został utworzony. Kolizja dla funkcji skrótu H to taka para różnych wiadomości m 1 i m 2, dla których wartość funkcji skrótu H jest identyczna, tj. H(m 1 ) = H(m 2 ). Własności funkcji skrótu ze względu na kolizje: brak możliwości łatwego generowania nowych kolizji, odporność na znalezienie drugiego przeciwobrazu, odporność na znalezienie przeciwobrazu. Oznacza, że możliwość znalezienia kolizji dla dwóch różnych wiadomości jest znikomo mała. Preimage resistance dla skrótu h nie istnieje żadna szybka metoda znalezienia wiadomości m, takiej, że H(m) = h (własność najsłabsza). Second preimage resistance dla danej wiadomości nie jest znana szybka metoda znalezienia innej różnej wiadomości, takiej, że ich skróty są sobie równe. Brak własności second preimage resistance oznacza brak odporności funkcji H na kolizje. Brak własności preimage resistance oznacza nieposiadanie przez funkcję własności second preimage resistance.

Funkcja skrótu jest to funkcja H, która dla do dowolnej informacji m przyporządkowuje niespecyficzną wartość h, mającą cechy pseudolosowe. Zastosowania: sygnaturowanie, implementacja sum kontrolnych, optymalizacja dostępu do danych, w kryptografii.

Funkcja skrótu jest to funkcja H, która dla do dowolnej informacji m przyporządkowuje niespecyficzną wartość h, mającą cechy pseudolosowe. Zastosowania: sygnaturowanie, implementacja sum kontrolnych, optymalizacja dostępu do danych, w kryptografii. Służą do potwierdzania autentyczności danych.

Funkcja skrótu jest to funkcja H, która dla do dowolnej informacji m przyporządkowuje niespecyficzną wartość h, mającą cechy pseudolosowe. Zastosowania: sygnaturowanie, implementacja sum kontrolnych, optymalizacja dostępu do danych, w kryptografii. Służą do potwierdzania autentyczności danych. Wykorzystywane do wykrywania błędnych danych, przekłamań w transmisjach danych itp.

Funkcja skrótu jest to funkcja H, która dla do dowolnej informacji m przyporządkowuje niespecyficzną wartość h, mającą cechy pseudolosowe. Zastosowania: sygnaturowanie, implementacja sum kontrolnych, optymalizacja dostępu do danych, w kryptografii. Służą do potwierdzania autentyczności danych. Wykorzystywane do wykrywania błędnych danych, przekłamań w transmisjach danych itp. Jako składnik mechanizmów dostępu do danych (tablice mieszające i asocjacyjne),

Funkcja skrótu jest to funkcja H, która dla do dowolnej informacji m przyporządkowuje niespecyficzną wartość h, mającą cechy pseudolosowe. Zastosowania: sygnaturowanie, implementacja sum kontrolnych, optymalizacja dostępu do danych, w kryptografii. Służą do potwierdzania autentyczności danych. Wykorzystywane do wykrywania błędnych danych, przekłamań w transmisjach danych itp. Jako składnik mechanizmów dostępu do danych (tablice mieszające i asocjacyjne), W kryptografii funkcja mieszająca musi spełniać wymagania: - brak praktycznej możliwości wygenerowanie dwóch wiadomości o takim samym skrócie (kolizja), - brak możliwości wnioskowania na temat wiadomości wejściowej na podstawie wartości skrótu (jednokierunkowość).

Funkcja skrótu jest to funkcja H, która dla do dowolnej informacji m przyporządkowuje niespecyficzną wartość h, mającą cechy pseudolosowe. Zastosowania: sygnaturowanie, implementacja sum kontrolnych, optymalizacja dostępu do danych, w kryptografii. Służą do potwierdzania autentyczności danych. Wykorzystywane do wykrywania błędnych danych, przekłamań w transmisjach danych itp. Jako składnik mechanizmów dostępu do danych (tablice mieszające i asocjacyjne), W kryptografii funkcja mieszająca musi spełniać wymagania: - brak praktycznej możliwości wygenerowanie dwóch wiadomości o takim samym skrócie (kolizja), - brak możliwości wnioskowania na temat wiadomości wejściowej na podstawie wartości skrótu (jednokierunkowość). Zmiana dowolnego pojedynczego bitu wiadomości powinna zmieniać średnio połowę bitów skrótu w sposób, który nie jest istotnie podatny na kryptoanalizę różnicową.

Funkcja skrótu jest to funkcja H, która dla do dowolnej informacji m przyporządkowuje niespecyficzną wartość h, mającą cechy pseudolosowe. Zastosowania: sygnaturowanie, implementacja sum kontrolnych, optymalizacja dostępu do danych, w kryptografii. Służą do potwierdzania autentyczności danych. Wykorzystywane do wykrywania błędnych danych, przekłamań w transmisjach danych itp. Przykłady: MD5, SHA-1, SHA-2. Jako składnik mechanizmów dostępu do danych (tablice mieszające i asocjacyjne), W kryptografii funkcja mieszająca musi spełniać wymagania: - brak praktycznej możliwości wygenerowanie dwóch wiadomości o takim samym skrócie (kolizja), - brak możliwości wnioskowania na temat wiadomości wejściowej na podstawie wartości skrótu (jednokierunkowość). Zmiana dowolnego pojedynczego bitu wiadomości powinna zmieniać średnio połowę bitów skrótu w sposób, który nie jest istotnie podatny na kryptoanalizę różnicową.

- tablica asocjacyjna Tablica asocjacyjna ang. associative array tablica skojarzeniowa, jest to rodzaj abstrakcyjnej struktury danych, przechowującej parę klucz-dane, umożliwiającej dostęp do danych na podstawie klucza. Cechy: tablica asocjacyjna to dane powiązane z mechanizmami dostępu, typ danych klucza może być praktycznie dowolny.

- tablica asocjacyjna Tablica asocjacyjna ang. associative array tablica skojarzeniowa, jest to rodzaj abstrakcyjnej struktury danych, przechowującej parę klucz-dane, umożliwiającej dostęp do danych na podstawie klucza. Cechy: tablica asocjacyjna to dane powiązane z mechanizmami dostępu, typ danych klucza może być praktycznie dowolny. W praktyce stosuje się drzewa poszukiwań (BST, AVL, itp.) lub tablice mieszające.

- tablica asocjacyjna Tablica asocjacyjna ang. associative array tablica skojarzeniowa, jest to rodzaj abstrakcyjnej struktury danych, przechowującej parę klucz-dane, umożliwiającej dostęp do danych na podstawie klucza. Cechy: tablica asocjacyjna to dane powiązane z mechanizmami dostępu, typ danych klucza może być praktycznie dowolny. Najczęściej są to łańcuchy znaków, ale także spotykane są liczby (całkowite, zmiennoprzecinkowe, zespolone), krotki, itp. W praktyce stosuje się drzewa poszukiwań (BST, AVL, itp.) lub tablice mieszające.

- tablica asocjacyjna Tablica asocjacyjna ang. associative array tablica skojarzeniowa, jest to rodzaj abstrakcyjnej struktury danych, przechowującej parę klucz-dane, umożliwiającej dostęp do danych na podstawie klucza. Cechy: tablica asocjacyjna to dane powiązane z mechanizmami dostępu, typ danych klucza może być praktycznie dowolny. Najczęściej są to łańcuchy znaków, ale także spotykane są liczby (całkowite, zmiennoprzecinkowe, zespolone), krotki, itp. W praktyce stosuje się drzewa poszukiwań (BST, AVL, itp.) lub tablice mieszające. Typowe operacje związane z działaniem na tablicach asocjacyjnych: przypisanie wartości do klucza, lub utworzenie klucza jeśli jest przypisanie do nieistniejącego klucza, aktualizacja klucza następuje zazwyczaj podczas próby dostępu do danych, odwołanie do nieistniejącego klucza generuje błąd, usunięcie klucza i opcjonalnie danych, sprawdzenie występowania klucza, pobranie list wszystkich kluczy, wszystkich wartości lub wszystkich par (klucz-dane).

- tablica mieszająca Tablica mieszająca jest to sposób implementacji tablicy asocjacyjnej, służącej do przechowywania informacji w sposób gwarantujący możliwie największą szybkość dostępu do danych, realizowany na podstawie wskazania danych przez informacje identyfikujące (tzw. klucz). Implementacja: zbudowane z tablic podstawowych, wykorzystują funkcje mieszającą,

- tablica mieszająca Tablica mieszająca jest to sposób implementacji tablicy asocjacyjnej, służącej do przechowywania informacji w sposób gwarantujący możliwie największą szybkość dostępu do danych, realizowany na podstawie wskazania danych przez informacje identyfikujące (tzw. klucz). Implementacja: zbudowane z tablic podstawowych, wykorzystują funkcje mieszającą, Tablice mieszające zbudowane są w oparciu o zwykłe tablicach indeksowanych liczbami, których dostęp do danych jest bardzo szybki, niezależnie od rozmiaru tablicy ani położenia elementu.

- tablica mieszająca Tablica mieszająca jest to sposób implementacji tablicy asocjacyjnej, służącej do przechowywania informacji w sposób gwarantujący możliwie największą szybkość dostępu do danych, realizowany na podstawie wskazania danych przez informacje identyfikujące (tzw. klucz). Implementacja: zbudowane z tablic podstawowych, wykorzystują funkcje mieszającą, Funkcja mieszająca, dla danego klucza, wyznacza indeks w tablicy (czyli przekształca klucz w liczbę z zadanego zakresu), przy czym funkcje mieszającą dobiera się do klucza. Tablice mieszające zbudowane są w oparciu o zwykłe tablicach indeksowanych liczbami, których dostęp do danych jest bardzo szybki, niezależnie od rozmiaru tablicy ani położenia elementu.

- tablica mieszająca Tablica mieszająca jest to sposób implementacji tablicy asocjacyjnej, służącej do przechowywania informacji w sposób gwarantujący możliwie największą szybkość dostępu do danych, realizowany na podstawie wskazania danych przez informacje identyfikujące (tzw. klucz). Implementacja: zbudowane z tablic podstawowych, wykorzystują funkcje mieszającą, Funkcja mieszająca, dla danego klucza, wyznacza indeks w tablicy (czyli przekształca klucz w liczbę z zadanego zakresu), przy czym funkcje mieszającą dobiera się do klucza. Tablice mieszające zbudowane są w oparciu o zwykłe tablicach indeksowanych liczbami, których dostęp do danych jest bardzo szybki, niezależnie od rozmiaru tablicy ani położenia elementu. Zasady doboru funkcji mieszającej: Są to zwykle funkcje o małej złożoności obliczeniowej, których wartości oblicza się względem klucza. Wartością funkcji jest indeks w tablicy z daną lub wskazanie na puste miejsce, jeśli dana nie istnieje. Złożoność czasowa wynosi O(1), wada jest możliwość wystąpienia kolizji. Dla danych o znanych cechach można wyznaczyć doskonałą funkcję mieszającą odwzorowującą n kluczy w różne wartości z przedziału [0..m-1], gdzie m n lub minimalną doskonałą funkcję mieszającą, dla której m = n.

- tablica mieszająca kolizje Kolizja w tablicy mieszającej występuje w sytuacji, gdy wartość funkcji mieszającej obliczonej dla klucza elementu wstawianego do tablicy pokrywa się z wartością klucza innego elementu znajdującego się już w tablicy, Rozwiązywanie problemu kolizji: metoda łańcuchowa, adresowanie otwarte.

- tablica mieszająca kolizje Kolizja w tablicy mieszającej występuje w sytuacji, gdy wartość funkcji mieszającej obliczonej dla klucza elementu wstawianego do tablicy pokrywa się z wartością klucza innego elementu znajdującego się już w tablicy, Rozwiązywanie problemu kolizji: metoda łańcuchowa, adresowanie otwarte. Metoda polega na przechowywaniu elementów nie bezpośrednio w tablicy, lecz na liście związanej z danym indeksem. Wstawiane elementy dołącza się na końcu listy. Średnia złożoność wyszukiwania jest sumą liniowego wyszukiwania elementu w liście i zależy od współczynnika wypełnienia listy, czyli stosunku liczby elementów do wielkości tablicy. Ponieważ złożoność pesymistyczna wyszukiwania wynosi O(n), czasami zamiast list stosuje się drzewa. Zaletą metody łańcuchowej jest szybkość i prostota usuwania elementów z listy.

- tablica mieszająca kolizje Kolizja w tablicy mieszającej występuje w sytuacji, gdy wartość funkcji mieszającej obliczonej dla klucza elementu wstawianego do tablicy pokrywa się z wartością klucza innego elementu znajdującego się już w tablicy, Rozwiązywanie problemu kolizji: metoda łańcuchowa, adresowanie otwarte. Metoda polega na wstawianiu elementu do tablicy w innym miejscu niż wynikałoby to z wartości funkcji mieszającej. Nowa lokalizacja określana jest przez dodanie do wartości funkcji mieszającej wartości tzw. funkcji przyrostu p(i), gdzie i oznacza numer próby wstawienia. Metody adresowania otwartego: wyszukiwanie liniowe funkcja przyrostu postaci p(i) = i, wyszukiwanie kwadratowe p(i) = i 2, mieszanie podwójne p(i) = i H'(K), gdzie H' jest dodatkową funkcją mieszającą dla klucza K. Metoda polega na przechowywaniu elementów nie bezpośrednio w tablicy, lecz na liście związanej z danym indeksem. Wstawiane elementy dołącza się na końcu listy. Średnia złożoność wyszukiwania jest sumą liniowego wyszukiwania elementu w liście i zależy od współczynnika wypełnienia listy, czyli stosunku liczby elementów do wielkości tablicy. Ponieważ złożoność pesymistyczna wyszukiwania wynosi O(n), czasami zamiast list stosuje się drzewa. Zaletą metody łańcuchowej jest szybkość i prostota usuwania elementów z listy.

- tablica mieszająca podsumowanie Tablica mieszająca jest to sposób implementacji tablicy asocjacyjnej, służącej do przechowywania informacji w sposób gwarantujący możliwie największą szybkość dostępu do danych, realizowany na podstawie wskazania danych przez informacje identyfikujące (tzw. klucz). Uwagi: W przypadku wyszukiwania liniowego może pojawić się problem grupowania, to znaczy koncentracji miejsc zajętych w pewnych zakresach indeksów przy małej zajętości innych obszarów tablicy. Problem ten jest w znacznym stopniu zredukowany w przypadku wyszukiwania kwadratowego i praktycznie wyeliminowany dla mieszania podwójnego. W przypadku adresowania otwartego istotnym problemem jest skomplikowanie procesu usuwania elementu, w sytuacji gdy w tablicy znajdują się inne, o tej samej wartości funkcji mieszającej. Wady tablic mieszających: duża złożoność pesymistyczna wyszukiwania, wynosząca O(n), duża złożoność czasowa związana z obliczaniem wartości dobrej funkcji mieszającej, zwiększony czas wyszukiwania danych w tablicach o małych rozmiarach, związany z cache'owaniem danych w nowoczesnych mikroprocesorach wyszukiwanie danych metodą sekwencyjną w małych tablicach przy danych ułożonych obok siebie będzie szybsze niż w przypadku użycia tablic mieszających.

Algorytmy numeryczne

Algorytmy numeryczne Algorytmy numeryczne służą do rozwiązywania zagadnień nie mających rozwiązania analitycznego lub gdy korzystanie z istniejących rozwiązań jest zbyt kosztowne. Cechy: wykorzystywane są do rozwiązywania zagadnień matematycznych za pomocą komputera, korzystają z liczb zapisanych w formatach używanych w komputerach, obliczenia są zazwyczaj przybliżone dokładność jest dobierany w zależności od typu algorytmu i potrzeb użytkownika.

Algorytmy numeryczne Algorytmy numeryczne służą do rozwiązywania zagadnień nie mających rozwiązania analitycznego lub gdy korzystanie z istniejących rozwiązań jest zbyt kosztowne. Cechy: wykorzystywane są do rozwiązywania zagadnień matematycznych za pomocą komputera, korzystają z liczb zapisanych w formatach używanych w komputerach, obliczenia są zazwyczaj przybliżone dokładność jest dobierany w zależności od typu algorytmu i potrzeb użytkownika. Źródła błędów w obliczeniach numerycznych: błąd danych wejściowych, błędy zaokrągleń w czasie obliczeń.

Algorytmy numeryczne Algorytmy numeryczne służą do rozwiązywania zagadnień nie mających rozwiązania analitycznego lub gdy korzystanie z istniejących rozwiązań jest zbyt kosztowne. Cechy: wykorzystywane są do rozwiązywania zagadnień matematycznych za pomocą komputera, korzystają z liczb zapisanych w formatach używanych w komputerach, obliczenia są zazwyczaj przybliżone dokładność jest dobierany w zależności od typu algorytmu i potrzeb użytkownika. Źródła błędów w obliczeniach numerycznych: błąd danych wejściowych, błędy zaokrągleń w czasie obliczeń. Próbki danych są zaokrąglane, ze względu na brak możliwości przechowywania danych o nieskończonej liczbie cyfr.

Algorytmy numeryczne Algorytmy numeryczne służą do rozwiązywania zagadnień nie mających rozwiązania analitycznego lub gdy korzystanie z istniejących rozwiązań jest zbyt kosztowne. Cechy: wykorzystywane są do rozwiązywania zagadnień matematycznych za pomocą komputera, korzystają z liczb zapisanych w formatach używanych w komputerach, obliczenia są zazwyczaj przybliżone dokładność jest dobierany w zależności od typu algorytmu i potrzeb użytkownika. Źródła błędów w obliczeniach numerycznych: błąd danych wejściowych, błędy zaokrągleń w czasie obliczeń. Błędy związane z błędem odwzorowania i/lub braku nieskończonej dokładności. Na przykład reprezentację liczby 0.10d można zrealizować jako 0.00100000b, co jest w rzeczywistości równe 0.125d. Próbki danych są zaokrąglane, ze względu na brak możliwości przechowywania danych o nieskończonej liczbie cyfr.

Algorytmy numeryczne Algorytmy numeryczne służą do rozwiązywania zagadnień nie mających rozwiązania analitycznego lub gdy korzystanie z istniejących rozwiązań jest zbyt kosztowne. Nadmiar i niedomiar: W komputerach stosuje się następujący model zapisu liczby zmiennoprzecinkowej: R= 1 s m 2 C gdzie: s znak, m znormalizowana mantysa (część ułamkowa), c cecha (część całkowita). Na zapisanie całej liczby poświęca się określoną liczbę bitów, przy czym: za dokładność liczby odpowiada mantysa, za zakres liczby odpowiada cecha. Jeśli zapis liczby wymaga d bitów, to mantysę można wykorzystać t bitów, natomiast na zapis cechy (d t 1) bitów (jeden bit odejmuje się na znak), wtedy: maksymalna cecha wynosi c, a mantysa należy do przedziału: max = c min =2 d t 1 1 liczby, które można reprezentować są z przedziału: 2,1 1 2 2C min R 2 C max nie będzie możliwości reprezentowania liczb spoza tego zakresu: jeśli liczba posiada cechę C < C min, to występuje tzw. niedomiar, dla liczb, których cecha C > C max występuje nadmiar.

Algorytmy numeryczne Algorytmy numeryczne służą do rozwiązywania zagadnień nie mających rozwiązania analitycznego lub gdy korzystanie z istniejących rozwiązań jest zbyt kosztowne. Zastosowania algorytmów numerycznych: całkowanie, znajdowanie miejsc zerowych wielomianów stopnia większego niż 2, rozwiązywanie układów równań liniowych w przypadku większej liczby równań i niewiadomych korzystanie ze wzorów na dokładne wartości pierwiastków równań stopnia 3 i 4 jest niepraktyczne, dla równań stopnia wyższego niż 4 takich wzorów nie ma, rozwiązywanie równań i układów równań różniczkowych, znajdowanie wartości i wektorów własnych (wykorzystywanych w mechanice kwantowej), aproksymacje, czyli przybliżanie nieznanych funkcji (np. reprezentujących zmiany zjawisk fizycznych)....

Algorytmy numeryczne - przykłady algorytmów Interpolacja liniowa polega na przybliżeniu wartości funkcji nieliniowej przez funkcję liniową o kreślonym przedziale liczbowym. Algorytm: Jeśli x określa wartość z przedziału x 0 < x < x 1, a y 0 = f(x 0 ) i y 1 = f(x 1 ) są wartościami danej funkcji, oraz h = x 1 x 0 oznacza odstęp pomiędzy argumentami, wówczas liniowa interpolacja wartości L(x) funkcji f dana jest jako: L x= y 0 y 1 y 0 h x x 0 Przykład: y 1 y 0 x 0 x 1

Algorytmy numeryczne - przykłady algorytmów Interpolacja wielomianowa interpolacja Lagrange'a polega na znalezieniu wielomianu Lagrange'a stopnia n, przyjmującego w n + 1 punktach (węzłach) te same wartości co przybliżana funkcja. Algorytm: Metoda interpolacji polega na wybraniu n + 1 punktów x 0, x 1,..., x n należących do dziedziny funkcji f, dla których są znane wartości tej funkcji: y 0 = f(x 0 ), y 1 = f(x 1 ),..., y n = f(x n ). Następnie znajduje się wielomian co najwyżej stopnia n, dla którego zachodzą zależności: W(x 0 ) = y 0, W(x 1 ) = y 1,... W(x n ) = y n. Przykład:

Algorytmy numeryczne - przykłady algorytmów Interpolacja wielomianowa interpolacja Lagrange'a polega na znalezieniu wielomianu Lagrange'a stopnia n, przyjmującego w n+1 punktach (węzłach) te same wartości co przybliżana funkcja. Metoda wyboru wielomianu: 1. Dla pierwszego węzła o wartości f(x 0 ) znajduje się wielomian, który w tym punkcie przyjmuje wartość f(x 0 ), a w pozostałych węzłach, tj. w x 1, x 2,..., x n, ma wartość zero. 2. Dla kolejnego węzła znajduje się podobny wielomian, który w drugim węźle przyjmuje wartość f(x 1 ), a w pozostałych węzłach x 0, x 2,..., x n, ma wartość zero. 3. Dodaje się do ostatnio obliczonego wielomianu do wielomian wyznaczony poprzednio. 4. Dla każdego z pozostałych węzłów znajduje się podobny wielomian, za każdym razem dodając go do wielomianu wynikowego. 5. Wielomian będący sumą wielomianów obliczonych dla poszczególnych węzłów jest wielomianem interpolującym. Uwagi: w praktyce ten typ interpolacji ma zastosowanie dla niewielkiej liczby punktów.

Algorytmy numeryczne - przykłady algorytmów Szybka transformata Fouriera (FFT) to algorytm obliczający dyskretną transformatę Fouriera oraz transformatę do niej odwrotną. Transformata Fouriera: Dla danych liczb zespolonych x 0, x 1,..., x n-1 dyskretna transformata Fouriera dana jest jako: n 1 X k = j=0 2 π i n x j e gdzie k = 0, 1,... n-1. Złożoność obliczeniowa algorytmu wynosi O(n 2 ). j k

Algorytmy numeryczne - przykłady algorytmów Szybka transformata Fouriera (FFT) to algorytm obliczający dyskretną transformatę Fouriera oraz transformatę do niej odwrotną. Transformata Fouriera: Dla danych liczb zespolonych x 0, x 1,..., x n-1 dyskretna transformata Fouriera dana jest jako: n 1 X k = j=0 2 i n x j e gdzie k = 0, 1,... n-1. Złożoność obliczeniowa algorytmu wynosi O(n 2 ). j k Szybka transformata Fouriera: Algorytm bazuje na metodzie dziel i zwyciężaj, przekształcając rekurencyjnie transformatę N = N 1 N 2 na transformaty N 1 i N 2, dla których złożoność obliczeniowa będzie wynosiła O(n) operacji mnożenia. Najpopularniejszą wersją algorytmu jest FFT o podstawie 2, w której wektor próbek wejściowych musi mieć długość n = 2 k, gdzie k to pewna liczba naturalna. Złożoność obliczeniowa szybkiej transformata Fouriera wynosi O(n log 2 n).

Algorytmy numeryczne - przykłady algorytmów Szybka transformata Fouriera (FFT) to algorytm obliczający dyskretną transformatę Fouriera oraz transformatę do niej odwrotną. Transformata Fouriera: Dla danych liczb zespolonych x 0, x 1,..., x n-1 dyskretna transformata Fouriera dana jest jako: n 1 X k = j=0 2 i n x j e gdzie k = 0, 1,... n-1. Złożoność obliczeniowa algorytmu wynosi O(n 2 ). j k Szybka transformata Fouriera: Algorytm bazuje na metodzie dziel i zwyciężaj, przekształcając rekurencyjnie transformatę N = N 1 N 2 na transformaty N 1 i N 2, dla których złożoność obliczeniowa będzie wynosiła O(n) operacji mnożenia. Najpopularniejszą wersją algorytmu jest FFT o podstawie 2, w której wektor próbek wejściowych musi mieć długość n = 2 k, gdzie k to pewna liczba naturalna. Złożoność obliczeniowa szybkiej transformata Fouriera wynosi O(n log 2 n). Zastosowanie: cyfrowe przetwarzanie sygnałów (DSP), pochodną algorytmu jest dyskretna transformata cosinusowa (DCT), stosowana w algorytmach kompresji danych: JPEG, MP3 itp.

Koniec wykładu