Maciej Piotr Jankowski

Podobne dokumenty
Wstęp do Informatyki zadania ze złożoności obliczeniowej z rozwiązaniami

Szukanie rozwiązań funkcji uwikłanych (równań nieliniowych)

Procesy Markowa zawdzięczają swoją nazwę ich twórcy Andriejowi Markowowi, który po raz pierwszy opisał problem w 1906 roku.

Podstawą w systemie dwójkowym jest liczba 2 a w systemie dziesiętnym liczba 10.

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

Tabele przestawne tabelą przestawną. Sprzedawcy, Kwartały, Wartości. Dane/Raport tabeli przestawnej i wykresu przestawnego.

Zadania do wykonania. Rozwiązując poniższe zadania użyj pętlę for.

OSTASZEWSKI Paweł (55566) PAWLICKI Piotr (55567) Algorytmy i Struktury Danych PIŁA

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.

Metoda Karnaugh. B A BC A

Nazwa implementacji: Nauka języka Python pętla for. Autor: Piotr Fiorek

Akademia Górniczo-Hutnicza im. Stanisława Staszica w Krakowie Olimpiada O Diamentowy Indeks AGH 2017/18. Informatyka Etap III

Sortowanie zewnętrzne

Dzielenie sieci na podsieci

Wstęp do metod numerycznych Eliminacja Gaussa Równania macierzowe. P. F. Góra

Algorytmy i struktury danych. Wykład 4

wagi cyfry pozycje

Jeśli czas działania algorytmu zależy nie tylko od rozmiaru danych wejściowych i przyjmuje różne wartości dla różnych danych o tym samym rozmiarze,

Zaawansowane algorytmy i struktury danych

Luty 2001 Algorytmy (7) 2000/2001

7. CIĄGI. WYKŁAD 5. Przykłady :

Mikroekonometria 6. Mikołaj Czajkowski Wiktor Budziński

KRYPTOGRAFIA I OCHRONA DANYCH PROJEKT

Import danych w formacie txt

Wyszukiwanie binarne

ARCHITEKTURA KOMPUTERÓW Systemy liczbowe

Równoległy algorytm wyznaczania bloków dla cyklicznego problemu przepływowego z przezbrojeniami

Tab. 1 Tab. 2 t t+1 Q 2 Q 1 Q 0 Q 2 Q 1 Q 0

x 2 = a RÓWNANIA KWADRATOWE 1. Wprowadzenie do równań kwadratowych 2. Proste równania kwadratowe Równanie kwadratowe typu:

Konkurs z przedmiotu eksploracja i analiza danych: problem regresji i klasyfikacji

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Ćwiczenie 3 stos Laboratorium Metod i Języków Programowania

Algorytmy w teorii liczb

Pomorski Czarodziej 2016 Zadania. Kategoria C

Kompletna dokumentacja kontenera C++ vector w -

x x

Działanie algorytmu oparte jest na minimalizacji funkcji celu jako suma funkcji kosztu ( ) oraz funkcji heurystycznej ( ).

Edytor materiału nauczania

NIEDZIESIĄTKOWE SYSTEMY LICZENIA.

Zadanie 2: Arytmetyka symboli

Mikroekonometria 5. Mikołaj Czajkowski Wiktor Budziński

2. DZIAŁANIA NA WIELOMIANACH

Kongruencje twierdzenie Wilsona

Wymagania edukacyjne z matematyki dla klasy VII

Wymagania edukacyjne z matematyki dla uczniów klasy VII szkoły podstawowej

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

KOŁO MATEMATYCZNE LUB INFORMATYCZNE - klasa III gimnazjum, I LO

znalezienia elementu w zbiorze, gdy w nim jest; dołączenia nowego elementu w odpowiednie miejsce, aby zbiór pozostał nadal uporządkowany.

Podstawy OpenCL część 2

I. Podstawy języka C powtórka

Teoretyczne podstawy informatyki

WZÓR OGÓLNY CIĄGU GEOMETRYCZNEGO

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Algorytmy i struktury danych Laboratorium Nr 4

Jeszcze o algorytmach

Algorytmy sztucznej inteligencji

Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny

Wykład z Technologii Informacyjnych. Piotr Mika

Sortowanie. Tomasz Żak zak. styczeń Instytut Matematyki i Informatyki, Politechnika Wrocławska

Jak korzystać z Excela?

Microsoft Access materiały pomocnicze do ćwiczeń cz. 1

ALGORYTMY Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny

Wykład z równań różnicowych

Algorytmy przeszukiwania wzorca

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu.

Zadanie 1. Algorytmika ćwiczenia

Instrukcja do modułu Kontroli Zarządczej (KZ)

Na podstawie: MS Project 2010 i MS Project Server Efektywne zarządzanie projektem i portfelem projektów, Wilczewski S.

Metody uporządkowania

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

Zamówienia algorytmiczne

2. Tworzenie tabeli przestawnej. W pierwszym oknie dialogowym kreatora określamy źródło danych, które mamy zamiar analizować.

Wymagania na poszczególne oceny w klasie II gimnazjum do programu nauczania MATEMATYKA NA CZASIE

Przykładowe sprawozdanie. Jan Pustelnik

ZESPÓŁ SZKÓŁ W OBRZYCKU

Przedmiotowe zasady oceniania i wymagania edukacyjne z matematyki dla klasy drugiej gimnazjum

KRYTERIA OCENIANIA Z MATEMATYKI W OPARCIU O PODSTAWĘ PROGRAMOWĄ I PROGRAM NAUCZANIA MATEMATYKA 2001 DLA KLASY DRUGIEJ

Układy VLSI Bramki 1.0

ZMIERZYĆ SIĘ Z KALKULATOREM

Algorytmy sortujące. sortowanie kubełkowe, sortowanie grzebieniowe

if (wyrażenie ) instrukcja

Jak nie zostać niewolnikiem kalkulatora? Obliczenia pamięciowe i pisemne.

Zadania ze statystyki, cz.6

8. Neuron z ciągłą funkcją aktywacji.

Sposoby przedstawiania algorytmów

Podstawowe moduły układów cyfrowych układy sekwencyjne cz.2 Projektowanie automatów. Rafał Walkowiak Wersja /2015

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

Programowanie dynamiczne

Czym jest całka? Całkowanie numeryczne

Metody uporządkowania

Technologie Informacyjne

Podział sieci na podsieci wytłumaczenie

CMAES. Zapis algorytmu. Generacja populacji oraz selekcja Populacja q i (t) w kroku t generowana jest w następujący sposób:

CIĄGI wiadomości podstawowe

Elektroniczny Urząd Podawczy

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

Zarządzanie przedsięwzięciem informatycznym. Śledzenie projektu

Przedstawienie najważniejszych zmian w formularzu wniosku o dofinansowanie EFRR wprowadzonych r.

Pole wielokąta. Wejście. Wyjście. Przykład

Projekt ZSWS. Instrukcja uŝytkowania narzędzia SAP Business Explorer Analyzer. 1 Uruchamianie programu i raportu. Tytuł: Strona: 1 z 31

Matematyka dyskretna. Andrzej Łachwa, UJ, /10

1. Wykład NWD, NWW i algorytm Euklidesa.

Transkrypt:

Reduced Adder Graph Implementacja algorytmu RAG Maciej Piotr Jankowski 2005.12.22 Maciej Piotr Jankowski 1

Plan prezentacji 1. Wstęp 2. Implementacja 3. Usprawnienia optymalizacyjne 3.1. Tablica ekspansji 3.2. Faktoryzacja 4. Wyniki testów 5. Instrukcja obsługi programu 6. Podsumowanie 2005.12.22 Maciej Piotr Jankowski 2

Wstęp Algorytm RAG został wymyślony dla usprawnienia procesu projektowania filtrów cyfrowych. Pozwala on tworzyć kolejne współczynniki filtru na podstawie współczynników poprzednich, np. przy wystąpieniu współczynników {3, 25} możemy zamiast zapisać 25 = 16 + 8 + 1 25 = 8 * 3 + 1 Elementem wymagającym optymalizacji jest w tym przypadku ilość wystapień sumatorów (czyli działań +/-) w układzie. Niestety, problem takiej optymalizacji układu jest NP-zupełny i wymaga odpowiednich narzędzi usprawniających działanie algorytmu. 2005.12.22 Maciej Piotr Jankowski 3

Implementacja Algorytm zaimplementowałem w C++. Stworzyłem jedną klasę RAG, która zajmuje się całym procesem. Przy pisaniu starałem się opierać na regułach heurystycznych, tzn. w pierwszej kolejności realizowane są współczynniki o najmniejszym koszcie (koszt = ilość sumatorów potrzebnych do realizacji). Jednakże duża złożoność obliczeniowa decyzji, które współczynniki realizować w dalszej kolejności oraz w jaki sposób, skłoniła mnie do poszukiwania metod usprawniających ten proces. Dodałem dwa elementy: - tablicę ekspansji - faktoryzację współczynników Wyniki uzyskane dzięki tym metodom uważam za całkiem przyzwoite, co dobrze widać w testach (pkt 4.) W dalszej części prezentacji przedstawię bardziej szczegółowo powyższe metody. 2005.12.22 Maciej Piotr Jankowski 4

Tablica ekspansji Usprawnienia optymalizacyjne Tablica ekspansji pozwala na bardzo szybką ocenę złożoności realizacji danego współczynnika. Jest to konieczne przy decyzji, który ze współczynników realizować w następnej kolejności. Tablica ta zawiera w polu o numerze n ilość sumatorów koniecznych do realizacji współczynnika n. Na samym początku tablica ta uzupełniana jest na podstawie możliwości kombinacji potęg dwójki (ponieważ nie mamy jeszcze żadnych współczynników). Kilka jej pierwszych pól wygląda następująco: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 0 0 1 0 1 1 1 0 1 1 2 1 2 1 1 0 1 1 2 1 2 2 2 1 2 2 2 2005.12.22 Maciej Piotr Jankowski 5

Tablica ekspansji cz. 2. Zgodnie z założeniami tablica ta w polach odpowiadających potęgom dwójki ma wartość 0, gdyż nie potrzebujemy żadnego sumatora do ich realizacji. Natomiast w polu 19 mamy wartość 2, ponieważ potrzebujemy dwóch sumatorów: 19 = 16 + 2 + 1 Aktualizacja tablicy ekspansji W momencie, gdy zrealizujemy jakiś współczynnik, tablica musi zostać uaktualniona. Polega to na porównaniu jej starych wartości z realizacjami uwzględniającymi nowy współczynnik. W przypadku, gdy nowa realizacja jest korzystniejsza dla np. liczby k, pole w tablicy tab[k] zmniejsza swoją wartość. I następnie jest sprawdzane, czy liczba k nie powoduje poprawy realizacji jakiegoś współczynnika. 2005.12.22 Maciej Piotr Jankowski 6

Tablica ekspansji cz. 3. Przykład Mamy na początku tablicę uzupełnioną wartościami z potęg dwójki. Następnie realizujemy współczynnik k=5 jako 5=4+1. Następne, co musimy zrobić, to zaktualizować tablicę ekspansji: W tym celu należy porównać wartości stare z wartościami przesuniętymi o k w prawo i zwiększonymi o 1, jak na rysunku. Jeśli powstały w ten sposób wynik jest lepszy (jak dla 13 lub 21) to jest zapisywany i następny krok to k = 13. To samo powtarzamy dla 2k, 4k, 8k, 16k itd. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 0 0 1 0 1 1 1 0 1 1 2 1 2 1 1 0 1 1 2 1 2 2 2 1 2 2 2 +1 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 0 1 1 2 1 2 2 2 1 2 2 3 2 3 2 2 1 2 2 3 2 3 3 13 = 5 + 8 21 = 5 + 16 2005.12.22 Maciej Piotr Jankowski 7

Podsumowanie i parametry Tablica ekspansji cz. 3. Ciągła aktualizacja tablicy ekspansji jest niewątpliwie sporym obciążeniem dla całego projektu. Jednak pożyteczność tej tablicy jest tak duża, że wydaje mi się iż opłaca się to w zupełności. Dodatkowo, żeby nieco poprawić szybkość, wprowadziłem różne usprawnienia, między innymi zapamiętuję wartości minimalne dla realizacji z jednym sumatorem, dwoma itd.(granice dolne) W miarę uzupełniania tablicy wartości te dość szybko rosną, co pozwala przyspieszyć działanie programu. Parametrem tablicy ekspansji jest jej długość, określona jako log2 z faktycznej długości tablicy. Większa tablica może dawać czasem (raczej dość rzadko) lepsze rezultaty, ale wydłuża też czas obliczeń, więc wybór należy do użytkownika. Nie należy też przesadzać, by wartości współczynników pomocniczych (tworzonych pośrednio podczas procesu) nie były zbyt duże. 2005.12.22 Maciej Piotr Jankowski 8

Faktoryzacja Faktoryzacja polega na rozłożeniu liczby na liczby pierwsze. Dzięki temu, a następnie połączeniu tych liczb w odpowiednie grupy można niekiedy uzyskać wyniki lepsze niż wynikające z tablicy ekspansji. Przykład. Liczba 715 zapisana za pomocą potęg dwójki w sposób normalny ma postać: 715 = 512 + 128 + 32 + 8 + 1 = 512 + 256 64 + 8 + 2 + 1 =... Jakby nie ustawiać, zawsze wychodzi 5 sumatorów. Po zastosowaniu faktoryzacji otrzymujemy: 715 = 5*11*13 = 55*13 = 65*11 = 5*143 Odpowiedni algorytm wyszukuje najlepszą kombinację czynników pierwszych i mamy: 715 = 65*11 = (64 + 1)*(8 + 2 + 1) Efekt widać na pierwszy rzut oka ilość sumatorów z 5 zmalała do 3. 2005.12.22 Maciej Piotr Jankowski 9

Faktoryzacja cz. 2. Uwagi: Rozkład na czynniki pierwsze uzyskałem stosując metodę Monte Carlo. Najbardziej złożonym elementem tej części projektu jest funkcja generująca wszystkie możliwe iloczyny czynników pierwszych i licząca zarazem ich minimalną realizację. Należy zauważyć, że wśród czynników końcowego iloczynu tylko jeden z nich może korzystać z wcześniej zrealizowanych współczynników reszta musi być tworzona z potęg dwójki, gdyż tylko wtedy taki iloczyn będzie możliwy w realizacji. 2005.12.22 Maciej Piotr Jankowski 10

Wyniki testów Testy zostały przeprowadzone na zupełnie losowych danych wygenerowanych przez program gen_filtr. Wyniki są uśrednione z 5 przykładów dla każdego przypadku. współczynników sumatorów Sumatorów/wsp. 10 14,6 1,46 20 23,2 1,16 30 30,8 1,03 40 37,8 0,95 50 47,4 0,95 60 54,2 0,9 70 62,6 0,89 80 70,8 0,89 90 80,8 0,9 100 86,4 0,86 2005.12.22 Maciej Piotr Jankowski 11

Przykładowe realizacje {3, 25, 75, 150,256} X 4 3X 8 25X 2 2 150X 75X 256 256X 2005.12.22 Maciej Piotr Jankowski 12

Przykładowe realizacje cz. 2. {99, 715} X 4 8 (faktoryzacja) 32 8 99X 715X 8 2005.12.22 Maciej Piotr Jankowski 13

Instrukcja obsługi programu wybór wielkości tablicy ekspansji rozpoczyna obliczenia pasek postępu parametry wynikowe pozwala na ponowne obliczenia (np. po zmianie wielkości tablicy) okienko z wynikami Obsługa programu jest dość intuicyjna i myślę, że nie wymaga dodatkowych wyjaśnień. 2005.12.22 Maciej Piotr Jankowski 14

Instrukcja obsługi programu cz. 2. Interpretacja wyników Wyniki są wypisane w postaci sieci równań, które kompletnie opisują graf powstały w wyniku działania algorytmu. W równaniach tych pojawiają się współczynniki pomocnicze, które są używane w dalszej części. Kolejność realizacji powinna się odbywać zgodnie z kolejnością wypisania współczynników. Oraz zgodnie z zasadami arytmetyki (tzn. W pierwszej kolejności wartości w nawiasach!). Z pewnych względów nie są wypisywane współczynniki będące potęgami dwójki. Format danych wejściowych W pierwszym wierszu pliku powinna znajdować się liczba współczynników, w następnych wierszach poszczególne współczynniki. 2005.12.22 Maciej Piotr Jankowski 15

Instrukcja obsługi programu - cz.3. Obsługa programu gen_filtr.exe Program ten generuje losowe współczynniki filtru. Sposób użycia: gen_filtr nazwa_pliku ilość_współczynników 2005.12.22 Maciej Piotr Jankowski 16

Podsumowanie Informacje, które zawarłem w tej prezentacji opisują mój projekt oraz samą istotę algorytmu Reduced Adder Graph bardzo powierzchownie. Problem ten jest jednak na tyle złożony, że potrzeba znacznie więcej miejsca i czasu żeby go opisać. Wyniki, jakie uzyskałem przy pomocy tego programu wskazują, że rzeczywiście warto jest się zainteresować tego typu rozwiązaniem, gdyż dla większej ilości współczynników otrzymujemy graf, w którym na każdy współczynnik przypada mniej niż jeden sumator to tak, jakby każdą liczbę dało się zapisać za pomocą sumy dwóch potęg dwójki. 2005.12.22 Maciej Piotr Jankowski 17