Rówoległe algorytmy genetyczne w zastosowaniu do problemu kolor

advertisement
POLITECHNIKA KRAKOWSKA - WIEiK - KATEDRA AUTOMATYKI
Technologie Informacyjne
www.pk.edu.pl/~zk/TI_HP.html
Wykładowca:
dr inż. Zbigniew Kokosiński
[email protected]
Wykład 1: Wprowadzenie do TI
•
•
•
•
•
•
•
•
•
Starożytne początki technologii informacyjnych
Babilon – pierwsze procedury i algorytmy
Egipt – podrecznik algebry i geometrii Ahmesa
Algorytmy Greków
Pierwsza maszyna licząca i język programowania
Model komputera i modele obliczeń
Pierwsze komputery elektronowe
Dualizm sprzętu i oprogramowania
Prognozy rozwoju sprzętu i oprogramowania
Cokolwiek raz uczynione zostało,
uczynione zostanie.
A nie masz nic nowego pod słońcem.
Kto otworzy usta i powie:
patrz, to jest nowe ?
To już działo się w wiekach,
które były przed nami.
Nie zostaje pamięć o ludziach dawnych.
Ani o tych, którzy po nich nastali,
pamiętać będą później urodzeni.
Księga Eklezjasty 1, 9-11 (300-200 p.n.e. ), tłum. Cz. Miłosz
Nośniki danych i obrazów
• Tusz, toner
– ~5000 p.n.e. Chiny
tusz (sadza+piżmo, węgiel drzewny, spalony lak)‫‏‬
– ~2630 p.n.e. Egipt
tusz (sadza z oleju palmowego + woda/klej)
• Papier
– ~3000 p.n.e. Egipt
papirus (std: 0.4m x 0.4m)‫‏‬
–
pergamin (skóra zwierzęca)‫‏‬
263 p.n.e. Pergamon
Pismo, systemy liczbowe I
• Pismo
– ~4000 p.n.e.
Mezopotamia pismo, zapis liczb, odciski kamyków w
glinie, znaki alfanumeryczne
Pismo, systemy liczbowe II
• Systemy liczbowe
– ~2780 p.n.e.
Indie, Egipt, Sumer
cyfra 0 – Indie ;
system dziesiętny – Indie, Egipt ;
systemy sześdziesiatkowy - Babilończycy.
Pismo, systemy liczbowe III
• Kamień z Rosetty
– 196 p.n.e. opis koronacji
Ptolemeusza V w trzech
językach :
hieroglificznym,
demotycznym i greckim
– znalezienie kamienia w
Egipcie w XIX w. przez
wojska napoleońskie
umożliwiło odczytanie
pisma hieroglificznego
Druk I
• Wydruki grafiki
– ~900 p.n.e. Meksyk
dekoracja tkanin i skóry (ceramiczne pieczątki
płaskie, cylindryczne)
– 593
pierwsze drzeworyty ilustr. (stemple drewniane)
n.e. Chiny
Druk II
• Druk dokumentów stronicowanych
–
868 n.e. Chiny
pierwsza drukowana książka (buddyjska sutra)
• Druk dokumentów składanych z czcionek
– 1040 n.e. Chinyskład drukarski - czcionki wypalane
(alchemik Pi Cheng)
– 1447 n.e. Europa
kalendarz Gutenberga– czcionki odlewane
– 1455 n.e. Europa
Biblia Gutenberga (185 egz., 1282 strony)
Druk III : Pelplińska biblia Gutenberga
• Ślad przewróconej czcionki na 46 stronie I tomu biblii
Gutenberga (25x7 mm, margines pod lewą szpaltą)‫‏‬
Katalogi: starożytne biblioteki
– Biblioteka Aleksandryjska, biblioteka Pergamońska
– organizacja zbiorów: systemy katalogów, etykiety
• 2002, Egipt, Bibliotheka Alexandrina
Początki informatyki – procedury
administracyjne
~2340-2000 Mezopotamia - procedury administracyjne w
okresie III dynastii babilońskiej, pierwsze algorytmy
~IX w. p.n.e. Kartagina – legendarna założycielka miasta i jego
pierwsza królowa Dydona, wytyczyła obszar o największej
powierzchni (w kształcie koła) mając do jego wyznaczenia
jedynie wołową skórę
Współczesne narzędzia:
1. procedury przetwarzania danych,
2. procedury numeryczne,
3. optymalizacja, badania operacyjne
Początki informatyki – algorytm babiloński
– Algorytm oblicza wielkość pól I i II, mając daną sumę
gruntów 30, zbiór 20 z 30 jednostek pola I, zbiór 15 z 30
jednostek pola II oraz nadwyżkę zbioru 8 i 1/3 z pola I.
Algorytm babiloński - współczesny program
Wejście: S – suma gruntów; Z1 – zbiór z 30 jednostek
pola I; Z2 – zbiór z 30 jednostek pola II;
NW – nadwyżka zbioru z pola I.
Wyjście: P1 – wielkość pola I; P2 – wielkość pola II.
1. wczytaj S=30; Z1=20; Z2=15; NW=8 1/3;
2. PS=S/2;
// oblicz połowę S
3. OS=1/S;
// oblicz odwrotność S
4. ZW1=OS*Z1;
// oblicz zbiór na jednostkę pola I
5. ZG1=ZW1*PS;
// oblicz zbiór z pierwszej połowy pola S
6. ZW2=OS*Z2;
// oblicz zbiór na jednostkę pola II
7. ZG2=ZW2*PS;
// oblicz zbiór z drugiej połowy pola S
8. R=ZG1-ZG2;
// oblicz różnicę zbiorów
9. R: RZ=NW-R;
// oblicz różnicę nadwyżki NW i różnicy R
10. SP=ZW1+ZW2; // oblicz sumę zbiorów na jednostkę
11. X=RZ/SP;
// oblicz X
12. P1=PS+X;
// oblicz P1
13. P2=PS-X;
// oblicz P2
14. wyprowadź P1,P2.
Ogólne cechy algorytmów babilońskich
1. Generalne procedury rozwiazywania całych klas problemów,
głownie o charakterze użytkowym.
2. Konkretne liczby są podane jako pomoc w wyjaśnieniu
ogólnej metody (w wyjątkowych przypadkach ogólne
zagadnienie jest rozwiązywane bez przykładu).
3. Występują osobliwości takie jak tworzenie kopii tej samej
liczby, która w trakcie wykonywania operacji została jako
argument zniszczona, zachowywanie wyniku w pamięci oraz
wielokrotne obliczanie tej samej wartości.
4. Algorytmy przypominają współczesne programy komputerowe.
Kończą się zwrotem: “Taki jest przepis”.
5. Twórcy algorytmów umożliwili zautomatyzowane i powtarzalne
wykonywanie tych użytecznych procedur ludziom o różnych
kwalifikacjach i doświadczeniu.
6. Mamy do czynienia z podobną standaryzacją i powtarzalnością jak
w przypadku procedur administracyjnych.
7. Sześćdziesiątkowy system pozycyjny odgrywał rolę analogiczną do
współczesnego systemu binarnego.
8. Zestaw tablic z algorytmami to odpowiednik biblioteki programów.
Egipski podręcznik algebry i geometrii
~1750 p.n.e. Pisarz Ahmes (Ahmose) wyjaśnia obliczanie pól
powierzchnii zamknietych i objętości (np. piramid i spichlerzy, pisze o
ułamkach, ciągach arytmetycznych (np. 2,4,6,8,10, ...) i geometrycznych
(np. 2,4,8,16,32, ...), rozwiązuje równania z jedną niewiadomą.
Przebieg typowego obliczenia wykonanego przez Ahmesa:
“[Problem] Kiedy wiadomo, że kawałek ziemi ma formę
uciętego trójkąta (trapez) z dwoma bokami o długości
20 khet, podstawę o długości 6 khet, a przekatną o
długości 4 khet, to jaka jest jego powierzchnia?
[Rozwiazanie] Dodaj przekątną do podstawy.
Otrzymasz 10. Weź połowę z tego, będzie to 5.
Pomnóż 5x20. Wynik 100 kwadratowych khetów.”
Algorytmy Greków: algorytm Euklidesa
(twórca: Eudoksos z Knidos)‫‏‬
Algorytm Euklidesa (metoda kolejnych dzieleń) to algorytm
znajdowania największego wspólnego dzielnika (NWD) dwóch
różnych liczb naturalnych. Nie wymaga rozkładania liczb na
czynniki pierwsze.
Przebieg algorytmu Euklidesa obliczania NWD liczb a i b:
1. oblicz c jako resztę z dzielenia a przez b
2. zastąp a przez b, zaś b przez c
3. jeżeli b = 0, to szukane NWD = a,
w przeciwnym wypadku przejdź do 1.
Algorytmy Greków: algorytm Eratostenesa
Sito Eratostenesa to algorytm kolejnego wybierania liczb
pierwszych z ciągu liczb naturalnych..
Przebieg algorytmu „sito Eratostenesa”:
1. Ze zbioru liczb naturalnych większych od
jedności wybieramy najmniejszą i
wykreślamy wszystkie jej wielokrotności
większe od niej samej.
2. Powtarzamy krok 1 dla kolejnych liczb
która nie zostały wykreślone.
3. Liczby niewykreślone w danym przedziale
stanowią rozwiązanie.
Algorytm Eratostenesa - animacja
Pierwsza maszyna licząca i język
programowania
Charles Babbage (1791-1871)‫‏‬
koncepcja komputera mechanicznego
- „maszyny analitycznej”
Ada Lovelace (1815-1852)‫‏‬
pierwszy program komputerowy obliczanie liczb Bernoulliego w
maszynie Babbage’a
Model komputera von Neumanna
– Komunikacja
pomiędzy pamiecią
danych a wejściem i
wyjściem komputera
do poprzez ALU
(wąskie gardło)‫‏‬
John von Neumann (1903-1957)‫‏‬
ENIAC - elektroniczna maszyna licząca
1945, USA, Uniwersytet Pensylwania
konstruktorzy: J.P. Eckert i J.W. Maulchy
18 000 lamp, 1 500 przekaźników, zużycie mocy 150 kW
30 ton, 140 m kw.
Realizacja
programów
częściowo
sprzętowa (kable)
Modele obliczeń - maszyna Turinga
• Alan Turing (1912-1954)
Modele obliczeń - maszyna Turinga
Modele obliczeń - maszyna RAM
Modele obliczeń - maszyna RAM
Dualizm programowo-sprzętowy
Systemy komputerowe składają się ze sprzętu (hardware) i
oprogramowania (software).
Komputery ogólnego przeznaczenia posiadają procesory z
ustaloną listą rozkazów.
W procesorach RISC (Reduced Instruction Set) lista rozkazów
jest uproszczona do minimum. Powoduje to w konsekwencji
konieczność budowy bardziej złożonych programów.
W procesorach CISC (Complex Instruction Set) lista rozkazów
jest rozbudowana. Powoduje to w konsekwencji skrócenie i
uproszczenie programów.
Generalnie wszystko co w komputerach ogólnego przeznaczenia
może być zrealizowane programowo, może też być również
zrealizowane sprzętowo (np. przez szybkie procesory grafiki,
procesory specjalizowane, itp.).
Języki i środowiska programowania
Język niskiego poziomu – asambler procesora.
Języki wysokiego poziomu – Basic, Fortran, Pascal, C, C++,
Java, itp.
Języki opisu sprzętu – Abel, VHDL, Verilog
Środowiska obliczeń matematycznych i inżynierskich Mathematica, Statistica, Maple, Matlab
Środowiska projektowania układów programowalnych Foundation ISE, Webpack ISE (Xilinx), (Altera)‫‏‬
Prognozy rozwoju informatyki I
I think there is a world market for maybe 5 computers.
Thomas Watson, chairman of IBM, 1943
Towards the one-and-a-half ton computer.
The Sunday Times, 12th November 1945, by Christopher Lloyd
Computers in the future will weight no more than 1.5 tons.
Popular Mechanics, 1949
.I have travelled the length and breath of this country and
talked with the best people, and I can assure you that data
processing is a fad that won' t last out the year.
Editor in charge of business books for Prentice Hall, 1957
But what ... is it good for?
Engineer at the Advanced Computing Systems Division of IBM,
commenting on the microchip, 1968
Prognozy rozwoju informatyki II
There is no reason why anyone would want to have a computer
in their home.
Ken Olson, president, chairman and founder
of Digital Equipment Corporation, 1977
So we went to Atari and said, "We've got this amazing thing,
even built with some of your parts and what do you think about
funding us? Or we'll give it to you. We just want to do it.
Pay our salary, we'll come work for you." They said "No".
Then we went to Hewlett-Packard; they said, “We don't need you.
You haven't got through college yet”.
Apple Computer founder Steve Jobs on attempts to get Atari and HP
interested in his and Steve Wozniak's personal computer
640k ought to be enough for anybody.
Bill Gates of Microsoft, 1981.
Download