Algorytm Chaitin a. Problem kolorowania grafu. Krzysztof Lewandowski Mirosław Jedynak

Podobne dokumenty
Algorytm Chaitin a. Mirosław Jedynak Krzysztof Lewandowski. Wstęp. Teoria grafów a teoria kompilacji

Badania operacyjne: Wykład Zastosowanie kolorowania grafów w planowaniu produkcji typu no-idle

a) 7 b) 19 c) 21 d) 34

Digraf. 13 maja 2017

TEORIA GRAFÓW I SIECI

Algorytm Dijkstry znajdowania najkrótszej ścieżki w grafie

Kolorowanie wierzchołków

Kolorowanie wierzchołków Kolorowanie krawędzi Kolorowanie regionów i map. Wykład 8. Kolorowanie

TEORIA GRAFÓW I SIECI

Matematyczne Podstawy Informatyki

Reprezentacje grafów nieskierowanych Reprezentacje grafów skierowanych. Wykład 2. Reprezentacja komputerowa grafów

Matematyka dyskretna. Andrzej Łachwa, UJ, B/14

Matematyka od zaraz zatrudnię

Algorytmy Równoległe i Rozproszone Część V - Model PRAM II

Algorytmy równoległe. Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka 2010

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

E: Rekonstrukcja ewolucji. Algorytmy filogenetyczne

Zofia Kruczkiewicz, Algorytmu i struktury danych, Wykład 14, 1

Metody Programowania

Matematyczne Podstawy Informatyki

Przykłady grafów. Graf prosty, to graf bez pętli i bez krawędzi wielokrotnych.

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

Graf. Definicja marca / 1

MATEMATYKA DYSKRETNA - KOLOKWIUM 2

Znajdowanie skojarzeń na maszynie równoległej

Wykłady z Matematyki Dyskretnej

Analiza konstrukcji zawierających wskaźniki. Piotr Błaszyński

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA

Systemy wbudowane. Uproszczone metody kosyntezy. Wykład 11: Metody kosyntezy systemów wbudowanych

ALHE. prof. Jarosław Arabas semestr 15Z

Język programowania: Lista instrukcji (IL Instruction List)

Wstęp do programowania

Wprowadzenie Podstawy Fundamentalne twierdzenie Kolorowanie. Grafy planarne. Przemysław Gordinowicz. Instytut Matematyki, Politechnika Łódzka

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Teoria grafów II. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak

. Podstawy Programowania 2. Grafy i ich reprezentacje. Arkadiusz Chrobot. 9 czerwca 2016

Algorytmiczna teoria grafów

10. Kolorowanie wierzchołków grafu

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA

Algorytmy Równoległe i Rozproszone Część III - Układy kombinacyjne i P-zupełność

Kolorowanie wierzchołków grafu

Opracowanie prof. J. Domsta 1

Generacja kodu docelowego

Algorytmy grafowe. Wykład 1 Podstawy teorii grafów Reprezentacje grafów. Tomasz Tyksiński CDV

Segmentacja obrazów cyfrowych z zastosowaniem teorii grafów - wstęp. autor: Łukasz Chlebda

Algorytmy i struktury danych. Co dziś? Tytułem przypomnienia metoda dziel i zwyciężaj. Wykład VIII Elementarne techniki algorytmiczne

Złożoność obliczeniowa

Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1

Kompilator języka C na procesor 8051 RC51 implementacja

TEORIA GRAFÓW I SIECI

Wstęp do sieci neuronowych, wykład 12 Wykorzystanie sieci rekurencyjnych w optymalizacji grafowej

Najkrótsza droga Maksymalny przepływ Najtańszy przepływ Analiza czynności (zdarzeń)

Analiza semantyczna. Gramatyka atrybutywna

Wykład 1_2 Algorytmy sortowania tablic Sortowanie bąbelkowe

Sortowanie topologiczne skierowanych grafów acyklicznych

Analiza efektywności przetwarzania współbieżnego. Wykład: Przetwarzanie Równoległe Politechnika Poznańska Rafał Walkowiak Grudzień 2015

ĆWICZENIE NR 1 WPROWADZENIE DO INFORMATYKI

5c. Sieci i przepływy

Struktury danych i złożoność obliczeniowa Wykład 7. Prof. dr hab. inż. Jan Magott

Algorytmy wyznaczania centralności w sieci Szymon Szylko

Wykład z Technologii Informacyjnych. Piotr Mika

Sortowanie - wybrane algorytmy

Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.

Zad. 1 Zad. 2 Zad. 3 Zad. 4 Zad. 5 SUMA

Grafy. Graf ( graf ogólny) to para G( V, E), gdzie:

Przykład planowania sieci publicznego transportu zbiorowego

Algorytmy Mrówkowe. Daniel Błaszkiewicz. 11 maja Instytut Informatyki Uniwersytetu Wrocławskiego

Blockly Kodowanie pomoc.

Wstęp do informatyki. Maszyna RAM. Schemat logiczny komputera. Maszyna RAM. RAM: szczegóły. Realizacja algorytmu przez komputer

Programowanie współbieżne Wykład 2. Iwona Kochańska

2012 Bentley Systems, Incorporated. Bentley Pointools V8i Przegląd

Podstawowe techniki segmentacji obszarów

Matematyczne Podstawy Informatyki

1. Liczby i w zapisie zmiennoprzecinkowym przedstawia się następująco

Porządek dostępu do zasobu: procesory obszary pamięci cykle procesora pliki urządzenia we/wy

Wykład 1. Systemy przekazywania wiadomości z założeniem bezbłędności działania

Zarządzanie pamięcią. Od programu źródłowego do procesu. Dołączanie dynamiczne. Powiązanie programu z adresami w pamięci

Od programu źródłowego do procesu

Budowa systemów komputerowych

Sortowanie przez wstawianie Insertion Sort

Wykład 10 Grafy, algorytmy grafowe

Przesyłania danych przez protokół TCP/IP

Inż. Kamil Kujawski Inż. Krzysztof Krefta. Wykład w ramach zajęć Akademia ETI

ATOLL. Wykonali: Aleksandra Kuchta, Łukasz Wójcik, Sztuczna Inteligencja, Semestr trzeci, Kierunek Informatyka, Wydział Informatyki i Zarządzania,

Planowanie przedsięwzięć

1. Eliminuje się ze zbioru potencjalnych zmiennych te zmienne dla których korelacja ze zmienną objaśnianą jest mniejsza od krytycznej:

Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych

System operacyjny System operacyjny

Wstęp do programowania

Rachunek podziałów i elementy teorii grafów będą stosowane w procedurach redukcji argumentów i dekompozycji funkcji boolowskich.

Wstęp do programowania

Grafem nazywamy strukturę G = (V, E): V zbiór węzłów lub wierzchołków, Grafy dzielimy na grafy skierowane i nieskierowane:

Imię, nazwisko, nr indeksu

Szeregowanie zadań. Wykład nr 3. dr Hanna Furmańczyk

Sortowanie. Bartman Jacek Algorytmy i struktury

Matematyka Dyskretna - zadania

Programowanie w języku C++ Grażyna Koba

Rozwiązywanie problemów metodą przeszukiwania

Transkrypt:

Algorytm Chaitin a Problem kolorowania grafu Krzysztof Lewandowski Mirosław Jedynak

Wstęp Szybkie zwiększenie prędkości procesorów wolniejszy rozwój prędkości dostępu do pamięci Kilkupoziomowy dostęp do pamięci (rejestry L1, L2, RAM, HD) Problem optymalnego wykorzystania poszczególnych rodzajów pamięci zadanie dla kompilatora

Przydział rejestrów Dostęp do rejestrów - najszybszy Zależne od architektury ilość i rodzaj rejestrów Z wymianą zawartości rejestrów związany jest dodatkowy koszt czas Najbardziej popularna metoda to k-kolorowanie grafu takie oznaczenie wszystkich wierzchołków grafu (korzystając z k kolorów), aby żadne sąsiadujące wierzchołki nie miały tego samego koloru G.J. Chaitin w publikacji pt. Register allocation via graph coloring zademonstrował, że problem przydziału rejestrów jest izomorficzny ze znanym problemem kolorowania grafu. k ilość rejestrów procesora Problem NP-zupełny dla k>2 algorytmy heurystyczne

Graf zależności W oparciu o kolejność instrukcji kompilator tworzy szereg grafów zależności (interference graph) Wierzchołek reprezentuje tymczasową wartość Krawędź (t 1,t 2 ) wskazuje że zmienne t 1 i t 2 nie mogą zostać przypisane do jednego rejestru (obie wartości są używane równocześnie)

Algorytm kolorowania 1. Build budowa grafów zależności na podstawie informacji o czasie życia zmiennych 2. Simplify Odkładanie na stos lokalnie kolorowalnych wierzchołków 3. Spill Jeśli nie jest możliwe k-kolorowanie grafu to wybranie wierzchołka przeznaczonego do przechowania w pamięci 4. Select Ściąganie ze stosu i kolorowanie wierzchołków

Algorytm kolorowania Dla grafu G i k kolorów: (1) Usuń z G wierzchołek v, którego ilość sąsiadów jest mniejsza niż k i odłóż go na stos (2) Usuń wszystkie krawędzie wychodzące v i powtarzaj (1) dopóki (a) v (b): (a) Graf G jest pusty (b) Nie ma wierzchołka z mniej niż k sąsiadami (3) Jeśli spełniony warunek (2a) to pokoloruj graf ściągając ze stosu wierzchołki v odtwarzając strukturę grafu, przypisując wierzchołkowi v kolor c, którym nie jest pokolorowany żaden z sąsiadów v (4) Jeśli spełniony (2b) wybierz wierzchołek v przeznaczony do przesłania do pamięci, usuń go z grafu i rozpocznij od początku

x = y++ + z

x = y++ + z #1: leaf y #2: operate #1 + 1 #3: assign y := #2 : leaf z : operate #2 + : assign x :=

x = y++ + z #1 #1: leaf y #2: operate #1 + 1 #3: assign y := #2 : leaf z : operate #2 + : assign x := #3 #2

x = y++ + z #1 #1: leaf y #2: operate #1 + 1 #3: assign y := #2 : leaf z : operate #2 + : assign x := #3 #2

x = y++ + z #1 #1: leaf y #2: operate #1 + 1 #3: assign y := #2 : leaf z : operate #2 + : assign x := #3 #2

#1 #2 #3 Problem przydziału 3 rejestrów 3-kolorowanie grafu #8 #0 #9

#1 #2 #3 #8 #9 #0 Wybieranie wierzchołków o ilości sąsiadów mniejszej niż 3

#1 #2 #3 #8 #9 #0 Wybieranie wierzchołków o ilości sąsiadów mniejszej niż 3

#8 3 2 1 #9 #0 Wybieranie wierzchołków o ilości sąsiadów mniejszej niż 3

#8 4 3 2 1 #9 #0 Brak wierzchołków o ilości sąsiadów mniejszej niż 3 rozpoczynanie od początku bez wierzchołka #8

#1 #2 #3 #9 #0 Wybieranie wierzchołków o ilości sąsiadów mniejszej niż 3

3 2 1 #9 #0 Wybieranie wierzchołków o ilości sąsiadów mniejszej niż 3

0 9 6 4 3 2 1 Wybieranie wierzchołków o ilości sąsiadów mniejszej niż 3

7 5 0 9 6 4 3 2 1 Wybieranie wierzchołków o ilości sąsiadów mniejszej niż 3

7 #1 #2 #3 5 0 9 6 4 #0 3 2 1 #9 Ściąganie ze stosu i kolorowanie wierzchołków

7 #1 #2 #3 5 0 9 6 4 #0 3 2 1 #9 Ściąganie ze stosu i kolorowanie wierzchołków

7 #1 #2 #3 5 0 9 6 4 #0 3 2 1 #9 Ściąganie ze stosu i kolorowanie wierzchołków

7 #1 #2 #3 5 0 9 6 4 #0 3 2 1 #9 Ściąganie ze stosu i kolorowanie wierzchołków

7 #1 #2 #3 5 0 9 6 4 #0 3 2 1 #9 Ściąganie ze stosu i kolorowanie wierzchołków

7 #1 #2 #3 5 0 9 6 4 #0 3 2 1 #9 Ściąganie ze stosu i kolorowanie wierzchołków

7 #1 #2 #3 5 0 9 6 4 #0 3 2 #9 3-kolorowanie zakończone 1

Niedoskonałości Nawet dla prostych grafów może nie znaleźć rozwiązania (niemożliwe 2-kolorowanie): Nie jest zorientowany na przepływ sterowania (np. pętle) Działa na etapie kompilacji bardziej wydajny byłby na etapie linkowania wywołania procedur; zmienne globalne

Podsumowanie Bardzo prosty algorytm dla grafów, które są k-kolorowalne działa w liniowym czasie w stosunku do liczby wierzchołków Inne bardziej wydajne algorytmy np. Chaitin-Briggs i Callahan-Koblenz Implementowany w większości kompilatorów