Egzamin - opracowanie
Transkrypt
Egzamin - opracowanie
Pytania na egzamin inżynierski (Informatyka)
Z PUTWiki
Skocz do: nawigacji, wyszukiwania
[edytuj] Pytanie 1
odp.• v
Modele obliczalności. (źródło http://pl.wikipedia.org/wiki/Teoria_obliczalno%C5%9Bci )
Modele obliczeń (źródło: TPI, wykład 7 "Równoważność modeli obliczeń", slajdy 12-18):
Rachunek lambda (λ) Churcha
Funkcja jest obliczalna, jeśeli odpowiadające jej wyrażenie λ jest redukowalne.
Maszyna Turinga
Funkcja jest obliczalna w sensie Turinga, jeśeli dla dowolnego zapisu początkowego taśmy maszyna Turinga zatrzyma się po wykonaniu
skończonej liczby kroków.
Maszyna RAM
Funkcja jest obliczalna, jeśeli można ją obliczyć za pomocąmaszyny RAM (maszyna RAM zatrzyma się dla dowolnego ciągu danych i wynik jest w
rejestrze R1).
Rachunek predykatów pierwszego rzędu
Formuła jest prawdziwa, jeśli istnieje dowód tej formuły (metodą rezolucji)
Funkcje rekurencyjne
Funkcja jest obliczalna, jeśeli jest funkcją częściowo rekurencyjną.
[edytuj] Pytanie 2
Metody wnioskowania w rachunku predykatów. odp.• v
Kiedyś TPI, teraz Logika obliczeniowa?
Rezolucja
a v b, -b v g
a v g
W rachunku predykatów definicja obliczalności jest następująca: Formuła jest prawdziwa, jeśli istnieje dowód tej formuły (metodą rezolucji)
Dowód metodą nie wprost:
Założenie o niesprzeczności teorii
Zatem dodanie zdania, które nie jest prawdziwe powoduje powstanie sprzeczności w rozważanym zbiorze zdań
Szukamy tej sprzeczności
Co będzie jeżeli nie ma sprzeczności?
Dowód metod rezolucji
1.
2.
3.
4.
5.
Przekształć przesłanki lub aksjomaty w formę klauzul.
Dodaj do zbioru aksjomatów zaprzeczenie twierdzenia, które ma być udowodnione.
Wygeneruj nowe klauzule wynikające z tego zbioru.
Znajdż sprzeczność generując pustą klauzulę.
Warunki użyte do wygenerowania pustej klauzuli są tymi, w których zaprzeczenie celu jest prawdziwe.
Znaczenie rezolucji:
Problem stwierdzenia prawdziwości formuły sprowadza się do znalezienia jej dowodu, którego konstrukcja jest operacją czysto składniową (tekstową), a
więc „mechaniczną”.
Jedną z metod automatycznego dowodzenia twierdzeń w FOL, przy wykorzystaniu metody „nie wprost” jest odkryta w roku 1965 przez J. B. Robinson
tzw. zasada rezolucji, oparta na jednej regule wnioskowania zwanej regułą rezolucji.
Jeżeli twierdzenie można udowodnić, to metodą rezolucji znajdziemy dowód, gdyż rezolucja jest metodą zupełną.
Dedukcja
Dedukcja jest szczególnym przypadkiem rezolucji. Rezolucja w postaci implikacyjnej to nie jest to samo co dedukcja.
Dedukcja:
-a => b, b => g
- a => g
Metoda tabel semantycznych - działają "Wstecz"
Ogólne informacje:
wartości zapamiętujemy w drzewie
pierwotna formuła jest umieszczana w korzeniu
liście zawierają zbiory literałów, które powinny być spełnione
liść zawierający literały komplementarne oznaczymy x, a liść zawierający zbiór literałów spełnialnych
Reguły produkcji
typu α
typu β
Zalety
liczba aksjomatów może być nieskończona.
każdy dowód składa się ze skończonego zbioru formu
latwo sprawdzić poprawność na podstawie składni formuł
z dowodu wynika jakich aksjomatów, twierdzeń oraz reguł użyto i w jakim kroku.
wzorzec dowodu można przenieść na podobne dowody
udowodnione twierdzenie może być wykorzystane w kolejnych dowodach
Wady
nie poddaje się systematycznemu przeszukiwaniu
wymaga pomysłowości, a nie „siłowego” przeszukiwania.
W rachunku predykatów (w porównaniu z rachunkiem zdań) należy dodać w metodzie tabel semantycznych dwie dodatkowe reguły dla kwantyfikatorów reguła
σ i γ. Mamy zatem cztery (α, β, σ, γ).
[edytuj] Pytanie 3
odp.• v
Wyrażenia regularne i ich implementacja w języku AWK.
Kiedyś TPI, a teraz?
http://gnu.univ.gda.pl/~tomasz/prog/awk/awk-intro/awk-man.html#id2915018
[edytuj] Pytanie 4
odp.• v
Definiowanie funkcji za pomocą operacji minimum.
http://pl.wikipedia.org/wiki/Funkcja_rekurencyjna http://www.ii.uni.wroc.pl/~zs/Dydaktyka/ProgFun/w12.pdf (strona 6-14)
A więc by zdefiniować funkcje operacja minimum najpierw musimy zapodać pare definicji.
Funckje bazowe:
Z(x) = 0 dla każdego x - funckja ścierajaća lub zerująca
S(x) = x + 1 dla każdego x - funckja następnika
Uni(x1, x2, ... xn) = xi - funckja projekcyjna (czyli i-ty element wybiera)
Schemat tworzenia fukncji:
Operacja superpozycji (składania funckji)
f(x)=g(h1(x), ... hn(x)) - gdzie g,h1 należa do zbiuru funckji A i zachodzi f należy do zbiuru A [x to wektor, nie umiem tutaj zrobic]
Operacja rekursji prostej
f(0,x)=g(x) - "krok" początkowy rekurencji [x to wektor, nie umiem tutaj zrobic]
f(S(n),x)=h(n, f(n,x), x) - "krok" rekurencji
Operator minimum
Oznacza najmniejsza liczbę m gdzie zachodzi:
niech um.f(x1,...xn,m)=0
i f jest zdefiniowana dla wszyskich k<=m. w przeciwnym wypadku nie określona.
Teraz majac to wszystko mozemy nazwac "funkcjami czesciowo rekurencyjnymi"
Przykłady:
poprzednik:
prev(0)=0
prev(S(n))=n // S(n)czytamy jako następnik n, w LO pisaliśmy jakos tak: y+1=x
formalnie:
prev(0)=0
prev(S(n))=U21(n,prev(n)) //wybieramy 1 element
dodawanie:
add(0,n)=n
add(m+1,n)=add(m,n)+1
formalnie:
add(0,n)=U11(n)
add(m+1,n)=h(m,add(m,n),n) gdzie h(x1,x2,x3)=S(U32(x1,x2,x3))
[edytuj] Pytanie 5
odp.• v
Różnice w sposobie kompresji obrazu jpeg i png.
Kompresja stratna JPG w kilku słowach, paragraf 'Kompresja formatu JPG' lub z polskiej wiki.
A tu o bezstratnej PNG.
[edytuj] Pytanie 6
odp.• v
Narzędzia wspomagające tworzenie stron WWW.
Podział narzędzi:
edytory tekstowe - notatnik, Notepad2, Quanta, Eclipse (z pluginem), Coda (na Maca)
edytory graficzne (tzw. WYSIWYG - What You See Is What You Get) - Dreamweaver, Pajączek
graficzne (ale nie WYSIWYG) - NetBeans, Microsoft Visual Studio, Zend Studio
Można też wspomnieć o:
pluginie do przeglądarki dla developerów (np. Web Developer dla Firefox)
debugerach PHP (i pewnie też innych języków)
[edytuj] Pytanie 7
odp.• v
Budowa komputera.
Większość współczesnych komputerów opartych jest na tzw. architekturze von Neumanna (od nazwiska Johna von Neumanna), tj. składa się z trzech
podstawowych elementów:
procesora - podzielonego na część arytmetyczno-logiczną czyli układu, który faktycznie wykonuje wszystkie konieczne obliczenia oraz część sterującą
pamięci RAM - (od ang. Random Access Memory) czyli układy scalone, które przechowują program i dane (umożliwia to m.in. samomodyfikację
programu) oraz bieżące wyniki obliczeń procesora i stale, na bieżąco wymienia dane z procesorem
urządzeń wejścia/wyjścia - które służą do komunikacji komputera z otoczeniem.
Typy komputerów - Współcześnie komputery dzieli się na:
komputery osobiste - o rozmiarach umożliwiających ich umieszczenie na biurku, używane zazwyczaj przez pojedyncze osoby
komputery domowe - poprzedniki komputerów osobistych, korzystający z telewizora, jako monitora.
komputery mainframe - często o większych rozmiarach, których zastosowaniem jest przetwarzanie dużych ilości danych na potrzeby różnego rodzaju
instytucji, pełnienie roli serwerów itp.
superkomputery - największe komputery o dużej mocy obliczeniowej, używane do czasochłonnych obliczeń naukowych i symulacji skomplikowanych
systemów.
komputery wbudowane - (lub osadzone, ang. embedded) specjalizowane komputery służące do sterowania urządzeniami z gatunku automatyki
przemysłowej, elektroniki użytkowej (np. telefony komórkowe itp.) czy wręcz poszczególnymi komponentami wchodzącymi w skład komputerów.
System komputerowy zbudowany w oparciu o architekturę von Neumanna powinien:
mieć skończoną i funkcjonalnie pełną listę rozkazów
mieć możliwość wprowadzenia programu do systemu komputerowego poprzez urządzenia zewnętrzne i jego przechowywanie w pamięci w sposób
identyczny jak danych
dane i instrukcje w takim systemie powinny być jednakowo dostępne dla procesora
informacja jest tam przetwarzana dzięki sekwencyjnemu odczytywaniu instrukcji z pamięci komputera i wykonywaniu tych instrukcji w procesorze.
Podane warunki pozwalają przełączać system komputerowy z wykonania jednego zadania (programu) na inne bez fizycznej ingerencji w strukturę systemu, a
tym samym gwarantują jego uniwersalność.
System komputerowy von Neumanna nie posiada oddzielnych pamięci do przechowywania danych i instrukcji. Instrukcje jak i dane są zakodowane w postaci
liczb. Bez analizy programu trudno jest określić czy dany obszar pamięci zawiera dane czy instrukcje. Wykonywany program może się sam modyfikować
traktując obszar instrukcji jako dane, a po przetworzeniu tych instrukcji - danych - zacząć je wykonywać.
[edytuj] Pytanie 8
odp.• v
Cykl rozkazowy procesora.
PROCESOR stanowi główny element komputera, ponieważ jest odpowiedzialny za przetwarzanie informacji. Składa się on z układów sterujących, arytmometru
oraz rejestrów . Układy sterujące odpowiadają za: dostarczenie arytmometrowi danych do obliczeń z pamięci operacyjnej, przekazywanie wyników obliczeń z
powrotem do pamięci oraz właściwą kolejność przetwarzania. W arytmometrze odbywają się wszystkie obliczenia realizowane przez komputer. W rejestrach
procesora przechowuje się adresy wybranych miejsc pamięci operacyjnej oraz dane i wyniki obliczeń. W wyróżnionym rejestrze nazywanym licznikiem
rozkazów jest umieszczany adres miejsca w pamięci wewnętrznej zawierającego bieżący rozkaz dla procesora. Praca procesora odbywa się w tzw. cyklach
rozkazowych.
Grafika:rozkazowy.jpg
Przebieg jednego cyklu rozkazowego można opisać za pomocą następującego algorytmu:
1. Zawartość miejsca pamięci wewnętrznej wskazywanego przez licznik rozkazów LR zostaje przesłana do układów sterujących procesora.
2. W układach sterujących następuje rozdzielenie otrzymanej informacji na dwa pola: pole operacji i pole argumentów. Pole operacji zawiera adres rozkazu,
który należy wykonać. Pole argumentów zawiera adresy, pod którymi są przechowywane dane oraz adres przeznaczenia wyniku.
3. Na podstawie wyznaczonych adresów następuje przesłanie z pamięci wewnętrznej argumentów do odpowiednich rejestrów, a na podstawie adresu
rozkazu arytmometr wykonuje odpowiednie działanie (operację arytmetyczną lub logiczną) na zawartościach rejestru.
4. Wynik przetwarzania (wynik wykonanej operacji) jest wysyłany do pamięci wewnętrznej pod adres przeznaczenia wyniku.
5. Następuje zmiana wartości licznika rozkazów LR tak, aby wskazywał on kolejny rozkaz dla procesora.
Wykonywanie obliczeń może zostać przerwane. Jeżeli procesor otrzyma sygnał informujący go o żądaniu obsługi przerwania następuje przerwanie obliczeń,
zapamiętanie stanu licznika rozkazów i wczytanie do licznika rozkazów adresu podprogramu (procedury) obsługi przerwania. Dalsze zachowanie się procesora
jest uzależnione od podprogramu obsługującego przerwanie. Oprócz przerwań nadchodzących z zewnątrz procesora (np. odczyt znaku z klawiatury) są
przerwania wewnętrzne procesora. Jednym z takich przerwań może być przerwanie jego pracy w przypadku, gdy procesor odczyta rozkaz dzielenia dowolnej
liczby przez liczbę 0.
[edytuj] Pytanie 9
odp.• v
Mechanizm funkcjonowania systemu przerwań komputera.
Fazy obsługi przerwania
1. Rozpoznanie i identyfikacja przerwania
2. Przerwanie wykonywania instrukcji i zapamiętanie kontekstu
3. Załadowanie nowego kontekstu i rozpoczęcie instrukcji przerwania
Podczas przerwania należy zapamiętać (kontekst):
Informacje o stanie procesora które mogą zostać samoczynnie zmodyfikowane przez procesor
Rejest stanu z inf. systemowymi
PC - wskazuje na bieżącą instrukcję
czasami nextPC
Przerwania dzielą się na dwie grupy:
Sprzętowe:
Zewnętrzne – sygnał przerwania pochodzi z zewnętrznego układu obsługującego przerwania sprzętowe; przerwania te służą do komunikacji z
urządzeniami zewnętrznymi, np. z klawiaturą, napędami dysków itp.
Wewnętrzne, nazywane wyjątkami (ang. exceptions) – zgłaszane przez procesor dla sygnalizowania sytuacji wyjątkowych (np. dzielenie przez
zero); dzielą się na trzy grupy:
faults (niepowodzenie) – sytuacje, w których aktualnie wykonywana instrukcja powoduje błąd; gdy procesor powraca do wykonywania
przerwanego kodu wykonuje następną, po tej która wywołała wyjątek, instrukcję;
traps (pułapki) – sytuacja, która nie jest błędem, jej wystąpienie ma na celu wykonanie określonego kodu; wykorzystywane przede wszystkim
w debugerach; gdy procesor powraca do wykonywania przerwanego kodu tę samą instrukcję która wywołała wyjątek;
aborts – błędy, których nie można naprawić.
Programowe – z kodu programu wywoływana jest procedura obsługi przerwania; najczęściej wykorzystywane do komunikacji z systemem operacyjnym,
który w procedurze obsługi przerwania (np. w DOS 21h, 2fh, Windows 2fh, Linux x86 przerwanie 80h) umieszcza kod wywołujący odpowiednie funkcje
systemowe w zależności od zawartości rejestrów ustawionych przez program wywołujący, lub oprogramowaniem wbudowanym jak procedury BIOS lub
firmware.
wazniak:Architektura Komputerów/Wykład 13: Wyjątki
[edytuj] Pytanie 10
odp.• v
Idea bezpośredniego dostępu do pamięci (DMA).
DMA (ang. Direct Memory Access - bezpośredni dostęp do pamięci) - technika, w której inne układy (np. kontroler dysku twardego, karta dźwiękowa, itd.)
mogą korzystać z pamięci operacyjnej RAM lub (czasami) portów we-wy pomijając przy tym procesor główny - CPU. Wymaga to współpracy ze strony
procesora, który musi zaprogramować kontroler DMA do wykonania odpowiedniego transferu, a następnie na czas przesyłania danych zwolnić magistralę
systemową (przejść w stan wysokiej impedancji). Sam transfer jest już zadaniem wyłącznie kontrolera DMA. Realizacja cykli DMA może przez urządzenie być
zrzucona na specjalny układ (np. w komputerach PC) lub być realizowana samodzielnie przez urządzenie.
DMA ma za zadanie odciążyć procesor główny od samego przesyłania danych z miejsca na miejsce (np. z urządzenia wejściowego do pamięci), procesor może
w tym czasie zająć się 'produktywnym' działaniem, wykonując kod programu pobrany uprzednio z pamięci RAM do pamięci cache operujący na danych w tejże
pamięci zgromadzonych. Specjalizowane układy wspomagające DMA (np. te spotykane w PC) potrafią też kopiować obszary pamięci dużo szybciej niż
uczyniłby to programowo procesor główny.
Istnieje specjalna procedura DMA, "Scatter-Gather" (dosł.: rozrzuć-zbierz), pozwalająca przenosić dane do wielu obszarów pamięci w pojedynczym transferze.
Pod względem skutków jest to równoważne połączeniu łańcuchowemu kilku transferów, jednak jest wyraźnie szybsze.
[edytuj] Pytanie 11
odp.• v
Podstawowe cechy architektury RISC.
RISC (Reduced Instruction Set Computers) - nazwa architektury mikroprocesorów która została przedstawiona pod koniec lat 70. w teoretycznych pracach na
uniwersytecie Berkeley oraz w wynikach badań Johna Cocke z Thomas J. Watson Research Center.
Ówczesne procesory (budowane w architekturze CISC) charakteryzowały się bardzo rozbudowaną listą rozkazów, ale jak wykazały badania tylko nieliczna ich
część była wykorzystywane w statystycznym programie. Okazało się np. że ponad 50% rozkazów w kodzie to zwykłe przypisania (zapis zawartości rejestru do
pamięci i odwrotnie).
Ponadto badania wykazały, że podczas działania programu ok. 26-45% wykonywanych instrukcji to instrukcje wywołania podprocedur lub instrukcje
obsługujące pętle, ok. 13-15% to wspomniane przypisania, 7-21% to instrukcje warunkowe (jeśli warunek to …), natomiast reszta to tylko 1-3%.
W związku z powyższym zaprezentowano architekturę mikroprocesorów, w której uwzględniono wyniki badań. Jej podstawowe cechy to:
Zredukowana liczba rozkazów do niezbędnego minimum. Ich liczba wynosi kilkadziesiąt, podczas gdy w procesorach CISC sięga setek. Upraszcza to
znacznie dekoder rozkazów.
Redukcja trybów adresowania, dzięki czemu kody rozkazów są prostsze, bardziej zunifikowane, co dodatkowo upraszcza wspomniany wcześniej dekoder
rozkazów. Ponadto wprowadzono tryb adresowania, który ogranicza ilość przesłań - większość operacji wykonuje się wg schematu: rejestr_C = rejestr_A
operacja rejestr_B.
Ograniczenie komunikacji pomiędzy pamięcią, a procesorem. Przede wszystkim do przesyłania danych pomiędzy pamięcią, a rejestrami służą
dedykowane instrukcje, które zwykle nazywają się load (załaduj z pamięci), oraz store (zapisz do pamięci); pozostałe instrukcje mogą operować wyłącznie
na rejestrach. Schemat działania na liczbach znajdujących się w pamięci jest następujący: załaduj daną z pamięci do rejestru, na zawartości rejestru
wykonaj działanie, przepisz wynik z rejestru do pamięci.
Zwiększenie liczby rejestrów (np. 32, 192, 256, podczas gdy np. w architekturze x86 jest zaledwie 8 rejestrów), co również ma wpływ na zmniejszenie
liczby odwołań do pamięci.
Dzięki przetwarzaniu potokowemu (ang. pipelining) wszystkie rozkazy wykonują się w jednym cyklu maszynowym, co pozwala na znaczne uproszczenie
bloku wykonawczego, a zastosowanie superskalarności także na umożliwienie równoległego wykonywania rozkazów. Dodatkowo czas reakcji na
przerwania jest krótszy.
Pierwszym procesorem zaprojektowanym w oparciu o architekturę RISC był RCA1802 wyprodukowany przez firmę RCA.
Obecnie popularne procesory Intela z punktu widzenia programisty są widziane jako CISC, ale ich rdzeń jest RISC-owy. Rozkazy CISC są rozbijane na
mikrorozkazy (ang. microops), które są następnie wykonywane przez RISC-owy blok wykonawczy. W praktyce okazuje się że rozwiązanie takie (pomimo wielu
znaczących wad) jest podejściem znacznie bardziej wydajnym (szczególnie że RISC-owy blok wykonawczy jest znacznie bardziej nowoczesny od architektury
CISC widocznej dla programisty).
wazniak:Architektura_Komputerów/Wykład_5:_Model_programowy_procesora_w_podejściu_CISC_i_RISC
[edytuj] Pytanie 12
odp.• v
Idea potokowego przetwarzania rozkazów.
Potokowość (ang. pipelining) — technika budowy procesorów polegająca na podziale logiki procesora odpowiedzialnej za proces wykonywania programu
(instrukcji procesora) na specjalizowane grupy w taki sposób, aby każda z grup wykonywała część pracy związanej z wykonaniem rozkazu. Grupy te są
połączone sekwencyjnie — potok (ang. pipe) — i wykonują pracę równocześnie, pobierając dane od poprzedniego elementu w sekwencji. W każdej z tych grup
rozkaz jest na innym stadium wykonania. Można to porównać do taśmy produkcyjnej. W uproszczeniu, potok wykonania instrukcji procesora może wyglądać
następująco:
Pobranie instrukcji z pamięci - ang. instruction fetch (IF)
Zdekodowanie instrukcji - ang. instruction decode (ID)
Wykonanie instrukcji - ang. execute (EX)
Dostęp do pamięci - ang. memory access (MEM)
Zapisanie wyników działania instrukcji - ang. store; write back (WB)
Uproszczony schemat potokowości. Części rozkazów oznaczone na zielono wykonywane są równocześnie.
Grafika:Fivestagespipeline.png
W powyższym 5-stopniowym potoku, przejście przez wszystkie stopnie potoku (wykonanie jednej instrukcji) zabiera co najmniej 5 cykli zegarowych. Jednak ze
względu na jednoczesną pracę wszystkich stopni potoku, jednocześnie wykonywanych jest 5 rozkazów procesora, każdy w innym stadium wykonania. Oznacza
to, że taki procesor w każdym cyklu zegara rozpoczyna i kończy wykonanie jednej instrukcji i statystycznie wykonuje rozkaz w jednym cyklu zegara. Każdy ze
stopni potoku wykonuje mniej pracy w porównaniu do pojedynczej logiki, dzięki czemu może wykonać ją szybciej - z większą częstotliwością - tak więc
dodatkowe zwiększenie liczby stopni umożliwia osiągnięcie coraz wyższych częstotliwości pracy.
Podstawowym mankamentem techniki potoku są rozkazy skoku, powodujące w najgorszym wypadku potrzebę przeczyszczenia całego potoku i wycofania
rozkazów, które następowały zaraz po instrukcji skoku i rozpoczęcie zapełniania potoku od początku od adresu, do którego następował skok. Taki rozkaz skoku
może powodować ogromne opóźnienia w wykonywaniu programu - tym większe, im większa jest długość potoku. Dodatkowo szacuje się, że dla modelu
programowego x86 taki skok występuje co kilkanaście rozkazów. Z tego powodu niektóre architektury programowe (np. SPARC) zakładały zawsze wykonanie
jednego lub większej ilości rozkazów następujących po rozkazie skoku, tzw. skok opóźniony. Stosuje się także skomplikowane metody predykcji skoku lub
metody programowania bez użycia skoków.
wazniak:Architektura Komputerów/Wykład 7: Działanie potokowej jednostki wykonawczej
[edytuj] Pytanie 13
odp.• v
Złożoność obliczeniowa w średnim i najgorszym przypadku oraz jej zastosowanie do analizy algorytmu szybkiego sortowania.
[edytuj] Pytanie 14
odp.• v
Podstawowe reprezentacje maszynowe grafów.
Lista krawędzi - lista par wierchołków między którymi jest krawędź
Macierz incydencji - macierz V x E
Macierz sąsiedztwa - macierz V x V
Listy sąsiedztwa - tablica V z listami krawędzi wychodzących od V
Macierz grafu - macierz (V+2)^2 przechowuje nie tylko połączenia pomiędzy wierzchołkami ale również informacje o poprzednikach i następnikach
wierzchołka. Wymyślona przez dr hab. inż. M.Sternę
Garść linków:
http://pl.wikipedia.org/wiki/Reprezentacja_grafu
http://www.astagor.net/putinf/data/algorytmy/Graf-reprezentacje.html
http://www.algorytm.org/index.php?option=com_content&task=view&id=44&Itemid=54
[edytuj] Pytanie 15
odp.• v
Problemy poszukiwania cyklu Eulera i cyklu Hamiltona oraz ich klasy złożoności obliczeniowej.
cykl Eulera - cykl przechodzący przez wszystkie krawędzie (przez każdą dokładnie jeden raz).
Stwierdzenie czy cykl Eulera występuje polega na sprawdzeniu 2 warunków:
1. graf jest spójny (dla każdej pary wierzchołków istnieje ścieżka prowadząca od jednego do drugiego)
2. w grafie nieskierowanym stopnie wszystkich wierzchołków są parzyste, a w grafie skierowanym liczba łuków wchodzących jest równa liczbie łuków
wychodzących.
Znajdowanie:Algorytm Fleury'ego złożoność O(n) gdzie n jest liczbą krawędzi (bo każdą krawędź przechodzimy dokładnie 2 razy).
cykl Hamiltona - cykl przechodzący przez wszystkie wierzchołki (przez każdy dokładnie jeden raz)
Stwierdzenie czy graf jest grafem Hamiltonowskim (zawiera cykl Hamiltona) i znalezienie tego cyklu w przypadku ogólnym polega na rozwiązaniu problemu
Komiwojażera (ang. traveling salesman problem) z zerowymi wagami krawędzi/łuków i jest NP-zupełne (brute force - złożoność wykładnicza). W przypadkach
szczególnych (gdy przed badaniem znamy dodatkowe własności grafu) może mieć złożoność O(n) gdzie n jest liczbą wierzchołków (np. graf pełny z >2
wierzchołkami - wystarczy przejść po wyszystkich wierzchołkach w dowolnej kolejności).
UWAGA: sprawdzenie czy graf jest grafem Hamiltonowskim jest problemem NP-zupełnym, ale już wyznaczenie cyklu jest problemem NP-trudnym!!! NPzupełne są tylko problemy decyzyjne, natomiast wyznaczenie cyklu jest problemem funkcyjnym, więc nie może być NP-zupełne z definicji
[edytuj] Pytanie 16
odp.• v
Deterministyczna i niedeterministyczna funkcja złożoności obliczeniowej algorytmu oraz klasy złożoności algorytmów.
[edytuj] Pytanie 17
odp.• v
Podstawowe klasy złożoności problemów decyzyjnych i optymalizacyjnych.
Problem decyzyjny jest sformułowany w postaci pytania, na które odpowiedź brzmi “tak” lub “nie”. (Pytanie: „Czy istnieje droga komiwojażera o koszcie
mniejszym od 130?”) Problem decyzyjny Pi to pewien zbiór parametrów oraz pytanie, na które odpowiedź brzmi „tak” lub „nie”. Ustalając wartości tych
parametrów otrzymujemy instancję I (konkretny przypadek problemu). Problem można również zdefiniować jako zbiór instancji DPi oraz jego podzbiór YPi,
zawierający instancje, na które odpowiedź brzmi „tak”.
Problem optymalizacyjny, to taki problem, w którym należy ekstremalizować pewną funkcję celu. („Znajdź drogę komiwojażera o najmniejszym koszcie.”)
Problemy decyzyjne a optymalizacyjne
Z danym problemem optymalizacyjnym można związać odpowiadający mu problem decyzyjny. Taki problem decyzyjny jest obliczeniowo nie trudniejszy, niż
odpowiadający mu pierwotny problem optymalizacyjny. Jeśli problem decyzyjny jest obliczeniowo „trudny”, to „trudny” jest również odpowiadający mu
problem optymalizacyjny.
Jeśli da się w "prosty" sposób rozwiązać problem optymalizacyjny, to można również "prosto" rozwiązać związany z nim problem decyzyjny. Z drugiej strony,
jeśli problem decyzyjny jest "trudny", to odpowiadający mu problem optymalizacyjny również jest "trudny". W celu wykazania "łatwości" problemu
decyzyjnego wystarczy wykazać łatwość problemu optymalizacyjnego. Dla wykazania natomiast "trudności" problemu optymalizacyjnego wystarczy wykazać
"trudność" związanego z nim problemu decyzyjnego.
Klasa P i NP
Klasę P tworzą wszystkie problemy decyzyjne, które w co najwyżej wielomianowym czasie rozwiązuje deterministyczna maszyna Turinga. Klasa NP
problemów decyzyjnych zawiera wszystkie problemy decyzyjne, które w co najwyżej wielomianowym czasie rozwiązuje niedeterministyczna maszyna Turinga.
Inna równoważna definicja mówi, że problem NP to taki, dla którego rozwiązanie można zweryfikować w czasie wielomianowym. Zatem P zawiera się w NP.
Problem z klasy P to ma algorytm wielomianowy dla DTM i NDTM (NDTM to zwykłe rozszerzenie DTM o możliwość zgadywania, którą regułę wybrać z
kilku pasujących - zawsze wybiera tą właściwą, można też sobie wyobrazić, że sprawdza wszystkie w międzyczasie, tworząc takie wielkie drzewo obliczeń).
Natomiast dla problemu z klasy NP wiadomo, że deterministyczna maszyna Turinga może go rozwiązać w czasie wykładniczym.
P = NP ???
To jest wielkie pytanie ;) nie udowodniono, ani że P = NP, ani że P != NP. Jest to chyba najważniejsze pytanie teoretycznej informatyki i jest jednym z
problemów milenijnych.
Transformacja wielomianowa
Transformacja wielomianowa problemu Pi2 do problemu Pi1 (co zapisujemy Pi2 oo Pi1) to taka funkcja f: Dpi2-> Dpi1, która spełnia warunki:
dla każdej instancji I2 należącej do Dpi2 odpowiedź brzmi "tak" wtedy i tylko wtedy, gdy dla instancji f(I2) odpowiedź brzmi również "tak"
czas obliczania funkcji f przez DTM dla każdej instancji I2 należącej do Dpi2 jest ograniczony od góry przez wielomian od N(I2)
NP-zupełność problemu decyzyjnego
Mówimy, że problem decyzyjny Pi1 jest NP-zupełny, jeśli Pi1 należy do NP i dla każdego innego problemu decyzyjnego Pi2 należącego do NP zachodzi: Pi2 oo
Pi1. Wynika stąd, że dla wykazania NP-zupełności badanego problemu decyzyjnego wystarczy przetransformować do niego wielomianowo dowolny znany
problem NP-zupełny.
Prościej: Problem Pi jest NP-zupełny jeśli należy do NP i jest NP-trudny. Problem jest NP-trudny jeśli, da się do niego przetransformować wielomianowo
dowolny problem NP.
Problemy zupełne to takie, które są 'najtrudniejsze' w swojej klasie. Tzn jeżeli umiemy rozwiązać jeden, to umiemy wszystkie. Jeżeli ktoś znajdzie
wielomianowy algorytm dla problemu NP-zupełnego to udowodni, że wszystkie problemy NP mają takie algorytmy, a co za tym idzie P = NP i dostanie za to
Nobla ;)
Silna NP-zupełność
Problem decyzyjny jest silnie NP-zupełny, jeśli należy do NP i istnieje wielomian p określony dla liczb całkowitych, dla którego Pip jest NP-zupełny
(problemami silnie NP-zupełnymi są problemy NP-zupełne nieliczbowe - inaczej: problem NP-zupełny nieliczbowy jest silny).
Problemy silnie NP-zupełne pozostają takimi nawet jeśli ograniczyć im dane wejściowe jakimś wielomianem. Przykładem jest Bin Packing (nie wiem jak po
polsku), natomiast słabo NP-zupełny jest problem plecakowy. Jeśli mu ograniczyć dane wejściowe wielomianem, to problem można rozwiązać w czasie
wielomianowym. Dokładnie jeżeli istnieje algorytm, który działa w czasie zależnym wielomianowo od rozmiaru instancji oraz zakresu parametrów wejściowych
(tj. algorytm pseudo-wielomianowy) to problem nie jest silnie NP-zupełny, a jest słabo NP-zupełny. Dodatkowo wszystkie problemy NP-zupełne, nieliczbowe
(np. problemy grafowe) są silnie NP-zupełne. Analogicznie istnieje silna oraz słaba NP-trudność.
NP-trudność problemu optymalizacyjnego
Dla wykazania trudności rozważanego problemu optymalizacyjnego wystarcza wykazanie NP-zupełności odpowiadającego mu problemu decyzyjnego.
Mówimy wtedy, że dany problem optymalizacyjny jest NP-trudny.
[edytuj] Pytanie 18
odp.• v
Sposoby przekazywania argumentów do funkcji występujące w języku C.
W języku C argumenty do funkcji są przekazywane przez wartość. Oznacza to, że w chwili wywołania funkcji tworzone są kopie poszczególnych zmiennych
skojarzonych z danymi argumentami i kopiom tym jest przypisywana wartość zmiennych będących argumentami aktualnymi. Wewnątrz funkcji wszystkie
operacje są wykonywane na kopiach zmiennych. Powoduje to, że algorytm funkcji nie ma możliwości modyfikacji wartości zmiennej przekazanej do funkcji
jako argument aktualny. Jeżeli funkcja ma mieć możliwość modyfikacji wartości zmiennej przekazanej do funkcji jako argument to musi być przekazany
wskaźnik (adres) do tej zmiennej. Należy tutaj pamiętać, że sam wskaźnik jest przekazany przez wartość. Funkcja znając adres danej zmiennej w pamięci może
modyfikować jej wartość.
Gdy argumentem funkcji jest tablica to zawsze jest przekazywany wskaźnik do zerowego elementu tej tablicy (nie jest tworzona kopia tablicy). Należy o tym
pamiętać, aby funkcja przypadkowo nie zmieniała wartości poszczególnych elementów tablicy.
[edytuj] Pytanie 19
odp.• v
Struktury danych w języku C.
Tablice - ciąg elementów tego samego rodzaju (1- i N-wymiarowe)
Struktury - zestaw pól gdzie polem jest dana lub struktura danych
Unie - wszystkie pola w tym samym obszarze pamięci
Wykład J.Kniata o strukturach: http://www.cs.put.poznan.pl/jkniat/C/C3.ppt
PS. Można też interpretować to pytanie szerzej, tzn. jak zaimplementować w języku C np. grafy, drzewa binarne, kopce itp. (to też struktury danych - pewnie
zależy osoby zadającej pytanie, jakiej odpowiedzi oczekuje).
[edytuj] Pytanie 20
odp.• v
Zasady przechowywania danych w pamięci operacyjnej - poziom asemblera.
Przechowywanie danych w pamięci operacyjnej
Zmienne proste o wartościach całkowitych: • zmienna 1-bajtowa
[nazwa] DB wartość, ..., wartość
• zmienna 2-bajtowa
[nazwa] DW wartość, ..., wartość
• zmienna 4-bajtowa
[nazwa] DD wartość, ..., wartość
• zmienna 6-bajtowa
[nazwa] DF wartość, ..., wartość
• [zmienna 8-bajtowa
[nazwa] DQ wartość, ..., wartość
• zmienna 10-bajtowa
[nazwa] DT wartość, ..., wartość
gdzie wartość to: • znak zapytania • wyrażenie o stałej wartości • stała znakowa • wyrażenie adresowe • operator DUP
np. i dw ? ;short int i; min dd 1 ;int min=1;
Tabliece jednowymiarowe operator DUP liczba dup (wartość, ..., wartość)
np. Elem dw 10 dup (?) ;short unsigned tablica[10];
Tablice wielowymiarowe Elem dd 10 DUP (20 DUP (?)) ; int tablica[10][20];
Inicjalizacja danych text1 db 'Hello world',0
Zmienne wskaźnikowe -> w asemblerze nie ma typu wskaźnikowego -> nie ma sprawdzania zgodności typów
ale można i tak wskazywać adresy w pamięci zwykłymi liczbami: p2int0 dd ? ; int *p2int0; mov p2int0, offset zmienna; p2int0 = &zmienna; da się też rzutować
typy mov eax,0 mov [p2int0],ax ; (short unsigned int *)p2int0 = 0; mov [p2int0]e,ax ; (unsigned int*)p2int0 = 0;
Istnieją też struktury takie jak w C
nazwa struc
definicje pól
nazwa ends
-> dostęp jak w C przez kropeczkę po nazwie -> inicjalizacja Data1 data <dzien,miesiac,rok>
[edytuj] Pytanie 21
odp.• v
Podprogramy i przekazywanie parametrów na poziomie asemblera.
http://neo.dmcs.p.lodz.pl/pn/struktury/struktury.ps
Przekazywać parametry można przez:
Przekazywanie przez rejestry
Przekazywanie przez stos
Przekazywanie przez zmienne statyczne
[edytuj] Pytanie 22
odp.• v
Zarządzanie procesami i wątkami (w tym: algorytmy przydziału procesora).
Stany procesów:
Nowy
Gotowy
Wykonywany
Zakończony
Oczekujący (na WE/WY)
Algorytmy niewywłaszczeniowe
FCFS - First Come First Served
LCFS - Last Come First Served
SJF - Short Job First
Algorytmy wywłaszczeniowe
RR - Round Robin
SRT - Shortest Reamaning Time
Materiały:
http://wazniak.mimuw.edu.pl/images/5/54/Sop_02_wyk_bw_1.1.pdf
http://wazniak.mimuw.edu.pl/images/7/7a/Sop_03_wyk_bw_1.2.pdf
[edytuj] Pytanie 23
odp.• v
Zarządzania pamięcią operacyjną (organizacje pamięci, pamięć wirtualna).
http://www.grush.one.pl/article.php?id=memtypes&page=3
[edytuj] Pytanie 24
odp.• v
Zarządzanie plikami (metody alokacji plików na dysku, zarządzanie obszarami wolnymi, algorytmy szeregowania ruchu głowic).
Zarządzanie plikami:
http://wazniak.mimuw.edu.pl/images/5/5a/Sop_09_wyk_1.0.pdf
Algorytmy szeregowania ruchu głowicy
Ekonomiczne wykorzystanie sprzętu jest jednym z wielu zadań systemu operacyjnego. Jeśli chodzi o dyski to jest to troska o szybki dostęp do nich i szybki
przesyłanie danych zawartych na nich. Są swa ważne składniki wpływające na czas dostępu do dysku: 1. czas szukania (seek time) - jest to czas potrzebny na
przemieszczenie ramienia dysku do pozycji w której głowice znajdują się w cylindrze zawierającym potrzebny sektor 2. opóźnienie obrotowe (rotation latency) jest to czas potrzebny na obrót dysku do pozycji w której głowica trafia nad potrzebny sektor
Jest jeszcze jeden parametr wpływający na prędkość pracy dysku. Jest to szerokość pasma (bandwidth). Szerokością pasma nazywamy łączną liczbę
przesyłanych bajtów, podzieloną przez łączny czas jaki upływa od pierwszego zamówienia na usługę dyskową, do chwili zakończenia ostatniego przesyłania.
Planowanie wykonywania dyskowych operacji we-wy może polepszyć zarówno czas dostępu, jak i szerokość pasma.
Każdy proces potrzebujący wykonać operacje we-wy dotyczącą dysku musi odwołać się do systemu operacyjnego. Zamówienie takie zawiera następujące
informacje: 1. czy jest to operacja wejścia czy wyjścia 2. dyskowy adres przesyłania 3. adres pamięci dotyczący przesyłania 4. liczbę bajtów do przesłania
Zamówienie można spełnić natychmiast, jeżeli napęd dysku i jego sprzętowy sterownik są gotowe do pracy. W innym przypadku każde nowe zamówienie jest
ustawiane w kolejce zamówień. Kolejka dyskowa może mieć po kilka zamówień w systemie wieloprogramowym. Po zakończeniu jednego zamówienia system
ma możliwość wyboru zamówienia, które będzie realizowane w następnej kolejności. Wyróżniamy kilka sposobów wyboru zamówień.
Opiszemy teraz metody planowania dostępu do dysków
1. Metoda FCFS
Jest to najprostszy algorytm planowania dostępu do dysku. Zamówienia sa wykonywane w kolejności ich zgłaszania. Skrót FCFS (first-come, first-served)
oznacza 'pierwszy zgłoszony - pierwszy obsłużony'. Jest to najbardziej sprawiedliwy z algorytmów jednak nie najszybszy. Załóżmy że kolejka zamówień na
operacje we-wy wygląda tak i odnosi się do bloków w cylindrach: 100, 198, 44, 132, 2, 134, 70, 72 a głowica dysku znajduje się początkowo na 65 cylindrze.
Głowica najpierw przemieści się do cylindra 100, a następnie w kolejności : 198, 44, 132, 2, 134, 70, a na końcu do cylindra 72. Głowica przechodzi łącznie 703
cylindry. Wadą tego planowania jest gwałtowne wychylanie się głowicy.
2. Metoda SSTF
Skrót SSTF jest skrótem od Shortest-Seek-Time-First, co oznacza -najpierw najkrótszy czas przeszukiwania'. Metoda ta polega na realizacji zamówień w takiej
kolejności, aby wielkość liczby cylindrów pomiędzy każdym zamówieniem była jak najmniejsza. Startując od cylindra 65 głowica przechodzi do cylindra 70,
gdyż ten leży najbliżej. Następnym cylindrem jest cylinder 72. Z cylindra 72 skaczemy do cylindra 44. Później głowica pobiera dane z cylindrów w następującej
kolejności: 2, 100, 132, 134, 198. Głowica łącznie pokonuje 273 cylindry. Jest to ok. 1/3 tej drogi jaką pokonuje głowica w metodzie FCFS. Planowanie tą
metodą może jednak powodować tzw. głodzenie (starvation). Spowodowane jest to tym, że zamówienia mogą przychodzić w dowolnym momencie. Powiedzmy
że mamy w kolejce do obsłużenia zamówienia dotyczące cylindrów 20 i 190. W czasie obsługiwania zamówienia w cylindrze 14 może nadejść zamówienie
dotyczące cylindra będącego bliżej, aniżeli cylinder 190. Zostaje więc obsłużone zamówienie które właśnie przyszło, a zamówienie dotyczące cylindra 190
zostaje przesunięte na koniec. Podczas wykonywania tego zamówienia, może przyjść kolejne będące bliżej aniżeli odległość tego cylindra, obsługiwanego teraz,
aniżeli odległość od cylindra 190. W ten sposób cylinder 190 może być w ogóle nie obsłużony.
Algorytm ten, choć krótszy od algorytmu FCFS, nie jest algorytmem optymalnym.
3. Metoda SCAN
Algorytm SCAN polega na tym, że ramię dysku rozpoczyna przemieszczanie się od jednej krawędzi dysku, do przeciwległej krawędzi. W czasie
przemieszczania się ramienia dysku, obsługiwane są zamówienia w kolejności napotkanych, żądanych przez system, cylindrów. Po osiągnięciu przeciwległej
krawędzi ramię dysku zmienia kierunek ruchu i zaczyna wracać, obsługując następne zamówienia napotkane po drodze. Do zaplanowania zamówień w
algorytmie SCAN potrzebna nam jest znajomość kierunku ruchu głowicy. Załóżmy że ramię przesuwa się w kierunku cylindra o numerze 0, wtedy kolejność
odczytywanych cylindrów będzie następująca: 65, 44, 2, 0, 70, 72, 100, 132, 134, 198. Jeśli w czasie przebiegu głowicy pojawiłoby się zamówienie dotyczące
cylindra który będzie za chwilę odwiedzany, zamówienie to zostanie obsłużone prawie natychmiast. Jeśli natomiast zamówienie dotyczy cylindra który
niedawno był mijany przez głowicę zamówienie musi poczekać aż głowica dojdzie do końca i powróci do tego miejsca.
Inną nazwą dla algorytmu SCAN jest nazwa: algorytm windy (elevator algorithm), a to dlatego że ramię dysku zachowuje się jak winda. Jeżdżąc góra dół
obsługuje wszystkie zamówienia, tak jakby winda zabierała ludzi.
4. Metoda C-SCAN
Odmianą algorytmu SCAN, jest algorytm C-SCAN (cilcural SCAN). Polega ona na tym, że po osiągnięciu jednej krawędzi dysku głowica wraca do drugiej
krawędzi, ale nie wykonuje nic poza tym. Po osiągnięciu tej drugiej krawędzi, głowica przemieszcza się do pierwszej krawędzi, wykonując zlecenia po drodze.
Algorytm ten jest zaprojektowany w trosce o bardziej równomierny rozkład czasu czekania na wykonanie zlecenia.
5. Metoda LOOK
Zarówno w planowaniu SCAN jak i C-SCAN głowica przemieszcza się od jednego skrajnego położenia do drugiego skrajnego. Żaden z tych algorytmów jednak
w rzeczywistości nie jest tak implementowany. Przeważnie głowica przesuwa się pomiędzy skrajnymi zamówieniami. Gdy osiągnie jedno z nich, natychmiast
robi zwrot i idzie w kierunku przeciwnym, nie dochodząc do skrajnego położenia na dysku. Są to algorytmy LOOK i C-LOOK które są poprawionymi
odpowiednikami algorytmów SCAN i C-SCAN.
Wybór odpowiedniego algorytmu
Ciężko jest wybrać odpowiedni algorytm dostępu do dysku. Algorytm SSTF jest dość powszechny i wygląda bardzo naturalnie. W systemach z dużą liczbą
zamówień, bardziej odpowiednimi algorytmami są algorytmy SCAN i C-SCAN, gdyż nie występuje w nich zjawisko tzw. głodzenia. Można zdefiniować dla
konkretnej listy zamówień optymalny porządek, lecz wielkość obliczeń do tego potrzebnych może nie dać się usprawiedliwić uzyskanymi oszczędnościami w
stosunku do metod SSTF lub SCAN. Liczba i rodzaj zamówień wpływa w największym stopniu na wydajność każdego algorytmu. Lokalizacja katalogów i
bloków indeksowych również jest ważna, gdyż każdy plik przed użyciem musi być otwarty. Natomiast otwarcie pliku wymaga przeszukania struktury
katalogowej. Dlatego algorytm planowania dostępu do dysku powinien być pisany jako osobny moduł i w razie potrzeby odpowiednio podmieniany przez
system operacyjny. W nowoczesnych dyskach twardych algorytmy planowania są zawarte w sterowniku dysku, gdyż producent sam najlepiej dobiera, jaka
metoda jest najlepsza dla dysku jego produkcji. System operacyjny musi jednak nadzorować te algorytmy gdyż np. operacja stronicowania na żądanie ma
większy priorytet niż np. operacja we-wy dotycząca aplikacji. Dlatego system operacyjny posiada swoje własne algorytmy które mają zapewnić zarówno
optymalną szybkość, jak i bezpieczeństwo danych zawartych na tym dysku.
[edytuj] Pytanie 25
odp.• v
Problem wzajemnego wykluczania i jego rozwiązania.
Analiza programowych rozwiązań problemu wzajemnego wykluczania
Dany jest zbiór procesów sekwencyjnych komunikujących się przez wspólną pamięć. Każdy z procesów zawiera sekcję krytyczną, w której następuje dostęp do
wspólnej pamięci. Procesy te są procesami cyklicznymi. Zakłada się ponadto:
1. Zapis i odczyt wspólnych danych jest operacją niepodzielną, a próba jednoczesnych zapisów lub odczytów realizowana jest sekwencyjnie w nieznanej
kolejności.
2. Sekcje krytyczne nie mają priorytetu.
3. Względne prędkości wykonywania procesów są nieznane.
4. Proces może zostać zawieszony poza sekcją krytyczną.
5. Procesy realizujące instrukcje poza sekcją krytyczną nie mogą uniemożliwiać innym procesom wejścia do sekcji krytycznej.
6. Procesy powinny uzyskać dostęp do sekcji krytycznej w skończonym czasie.
Przy tych założeniach należy zagwarantować, że w każdej chwili czasu co najwyżej jeden proces jest w swojej sekcji krytycznej.
Rozwiązania:
1. Programowe – algorytmy: Dekkera, Dijkstry, Petersona dla 2 i dla n procesów, Lamporta dla n procesów
2. Sprzętowe: instrukcja testandset(a, b) – instrukcja w sposób atomowy dokonuje odczytu zmiennej b, zapamiętania wartości tej zmiennej w zmiennej a oraz
przypisania zmiennej b wartości true.
3. Systemowe: semafory – semaforem nazywamy zmienną chronioną, na ogół będącą nieujemną zmienną typu integer, do której dostęp (zapis i odczyt)
możliwy jest tylko poprzez wywołanie specjalnych funkcji dostępu i inicjacji. Wyróżnia się semafory: binarne – przyjmujące tylko wartość 0 lub 1; ogólne
(licznikowe) – mogą przyjąć nieujemną wartość całkowitoliczbową.
[edytuj] Pytanie 26
odp.• v
Operacje semaforowe - ich implementacje i zastosowania.
Operacje P (testuj) i V (inkrementuj). Operacja P(S) na semaforze S działa w sposób następujący:
if S>0 then S:=S-1 else (wait on S)
Operacja V(S) na semaforze S działa następująco:
if(one or more processess are waiting on S) then (let one of these processess proceed) else S:=S+1
Głównym zastosowaniem operacji P i V jest zapewnienie wzajemnego wykluczania.
Implementacja binarnych operacji semaforowych z aktywnym czekaniem:
a Pb(Sb): repeat nottestandset(Pactive, Sb) until(Pactive)
b Vb(Sb): Sb := true;
Implementacja ogólnych operacji semaforowych z aktywnym czekaniem:
a
procedure P_S
begin
while S<=0 do ;
S:=S-1
end
b
procedure V_S
begin
S:=S+1
end
Do tego dochodzi jeszcze kilka dłuższych procedurek implementacyjnych, ale z pamięci to raczej ciężko drukować linie kodu:-)
[edytuj] Pytanie 27
odp.• v
Monitory i ich zastosowania.
Monitor w angielskiej wikpedii
Przez monitor należy rozumieć typ w którym zdefiniowano zmienne związane ze współdzielonym zasobem oraz procedury operujące na tym zasobie. Monitory
zapewniają wzajemne wykluczanie.
Zastosowania – w ogólności do wszelkich operacji, gdzie wymagane jest wzajemne wykluczanie. Przykładowo można za ich pomocą rozwiązać problem
czytelników i pisarzy albo ucztujących filozofów.
[edytuj] Pytanie 28
odp.• v
Problem zakleszczenia i podejścia do jego rozwiązania.
Mówimy, że system jest w stanie zakleszczenia, jeżeli istnieje niepusty zbiór zadań, które żądają przydziału dodatkowych zasobów nieprzywłaszczalnych
będących aktualnie w dyspozycji innych zadań tego zbioru. Innymi słowy, system jest w stanie zakleszczenia, jeżeli istnieje niepusty zbiór zadań, których
żądania przydziału dodatkowych zasobów nieprzywłaszczalnych nie mogą być spełnione nawet jeśli wszystkie zadania nie należące do zbioru zwolnią wszystkie
zajmowane zasoby.
Warunki konieczne wystąpienia zakleszczenia:
wzajemne wykluczanie – w każdej chwili zasób może być przydzielony co najwyżej jednemu zadaniu
zachowywanie zasobu – proces oczekujący na przydzielenie dodatkowych zasobów nie zwalnia zasobów będących aktualnie w jego dyspozycji
nieprzywłaszczalność – zasoby są nieprzywłaszczalne tzn. Ich zwolnienie może być zainicjowane jedynie przez proces dysponujący w danej chwili
zasobem
istnienie cyklu oczekiwań – występuje pewien cykl procesów z których każdy ubiega się o przydział dodatkowych zasobów będących w dyspozycji
kolejnego procesu z cyklu
Rozwiązania problemu zakleszczenia:
Konstrukcje systemów immanentnie (z natury) wolnych od zakleszczenia – podejście to polega w ogólności na wyposażeniu systemu w taką liczbę
zasobów, aby wszystkie możliwe żądania zasobowe były możliwe do zrealizowania.
Detekcja zakleszczenia i odtwarzanie stanu wolnego od zakleszczenia – W podejściu detekcji i odtwarzania, stan systemu jest periodycznie sprawdzany i
jeśli wykryty zostanie stan zakleszczenia, system podejmuje specjalne akcje w celu odtworzenia stanu wolnego od zakleszczenia. Przykład: algorytm
Habermana.
Unikanie zakleszczenia – W podejściu tym zakłada się znajomość maksymalnych żądań zasobowych. Każda potencjalna tranzycja stanu jest sprawdzana i
jeśli jej wykonanie prowadziłoby do stanu niebezpiecznego, to żądanie zasobowe nie jest w danej chwili realizowane.
Zapobieganie – W ogólności podejście to polega na wyeliminowaniu możliwości zajścia jednego z warunków koniecznych zakleszczenia. Przykłady:
algorytm Wait-Die, algorytm Wound-Wait.
[edytuj] Pytanie 29
odp.• v
Synteza układów kombinacyjnych a synteza układów sekwencyjnych.
Układy przełączające:
1 Układy kombinacyjne – wartość każdego sygnału wyjściowego yi zależy wyłącznie od aktualnej kombinacji sygnałów wejściowych x1, x2, ..., xn.
Funkcje fi(x1, x2, ..., xn), i=1, 2..., m, będziemy nazywać funkcjami przełączającymi, jeśli podobnie jak ich argumenty będą przyjmować tylko dwie wyróżnione
wartości, oznaczone przez 0 i 1. Dla ciągu k-elementowego o elementach dwuwartościowych liczba możliwych różnych ciągów wyniesie 2^k. Podobnie na k
ciągach można określić liczbę 2^k funkcji przełączających. Z powyższego wynika, że dla n argumentów można określić2^2n funkcji przełączających.
Algebra Boole'a – zbiór B z operacjami nazywanymi dodawaniem logicznym, mnożeniem logicznym i operacją umowną zwaną negacją.
Zbiór funkcji przełączających nazywa się systemem funkcjonalnie pełnym, jeśli dowolna funkcja przełączająca moze być przedstawiona za pomocą stałych 0 i 1
oraz funkcji należących do tego zbioru i argumentów funkcji.
Reprezentacje funkcji przełączających:
a
b
c
d
Opis słowny
Postać normalna
Wykres
Tablica
Do tego można dodać cośtam o minimalizacji funkcji za pomocą siatek Karnaugh i metodą Quine'a-McCluskey'a, ale to już materiał na osobny, spory temat.
2 Układy sekwencyjne – wartość sygnału wyjściowego yi zależy od stanu aktualnego sygnałów xi i stanów poprzednich.
Uogólnieniem pojęcia układu kombinacyjnego jest układ logiczny z pamięcią zwany układem sekwencyjnym. Układy takie analizowane są w dyskretnych
chwilach czasu które oznaczymy za pomocą kolejnych liczb naturalnych. W układzie sekwencyjnymwartość wektora Yk jest funkcją nie tylko wektora Xk w kteh chwili czasu lecz także funkcją poprzednich wartości wektora wejściowego Xk-1, Xk-2... Mówimy, że układ pamięta historię wejść jako stan wewnętrzny.
Mówi się często, że układ pamięta historię wejść, jako stany s1, s2, ..., sn. Stany wewnętrzne są rozróżniane za pomocą dwustanowych elementów
pamięciowych. Układ, który posiada p elementów pamięciowych może przyjmować w=2p stanów wewnętrznych. Stan wewnętrzny układu będzie zatem
opisywany przez wektor stanu wewnętrznego S o p składowych binarnych. Zbiór wszystkich możliwych wektorów stanu oznaczymy przez {S}.
Wartość wektora wyjściowego w chwili k zależy od wartości wektora wejściowego w chwili k oraz od wartości wektora stanu w chwili k. Powyższe można
zapisać w postaci funkcji wyjściowej <lambda> przyporządkowującej każdej parze wektorów <Xk Sk> wektor Yk. Podanie funkcji nie wystarcza jednak do
pełnego scharakteryzowania pracy układu. Niezbędne jest określenie zmian, którym ulega S przy zmianie X. W tym celu dla wektorów Xk i Sk należy podać
wektor stanu w chwili następnej Sk+1. Zmiany te opisuje funkcja przejściowa <delta> przyporządkowująca każdej parze wektorów <Xk Sk> wektor Sk+1. Dla
scharakteryzowania układu sekwencyjnego należy zatem podać:
a
b
c
d
e
zbiór wszystkich wektorów wejściowych {X}
zbiór wszystkich wektorów wyjściowych {Y}
zbiór wszystkich wektorów stanu {S}
funkcję przejściową <delta>
funkcję wyjściową <lambda>
Powyższy układ nosi nazwę automatu Mealy'ego. Przyjąwszy inną definicję funkcji wyjściowej – funkcja <lambda> przyporządkowuje każdemu wektorowi
stanu S wektor wyjściowy Y – mamy do czynienia z tzw. automatem Moore'a.
Układy logiczne przedstawiane są często w postaci tablic przejść-wyjść lub grafów stanów. Układy kombinacyjne są szczególnym przypadkiem układów
sekwencyjnych, w których zbiór stanów jest jednoelementowy – układ jest zawsze w tym samym stanie wewnętrznym.
Można tu jeszcze dorzucić linki: syntez układów kombinacyjnych: http://ii.ap.siedlce.pl/~florek/sk/systemy_komputerowe_pliki/projektowanie_ukladow.html
syntez układów sekwencyjnych: http://wazniak.mimuw.edu.pl/index.php?title=TC_Modu%C5%82_7
[edytuj] Pytanie 30
odp.• v
Łączenie pamięci (zwiększanie długości słowa i liczby słów).
1. Zwiększanie długości słowa – z reguły ogranicza się do dokładania układów pamięci, podłączania tej samej magistrali adresowej (ta sama przestrzeń
adresowa); wyjście danych z dodatkowego układu pamięci wydłuża słowo danych.
2. Zwiększenie liczby słów – zwiększenie przestrzeni adresowej – przykładowo dwukrotne zwiększenie liczby słów (przestrzeń adresowa zmieni się z An do
An+1) można wykonać następująco:
1. dokładamy drugi taki sam zestaw układów pamięci,
2. nowe układy są podłączane do tej samej magistrali adresowej (A0-An-1),
3. wyjścia danych stare i nowego zestawy są podłączane razem (wszak słowo się nie zmienia, należałoby tam jakieś bufory dać ale to już szczegół
implementacyjny).
4. należy zwiększyć przestrzeń adresową – dodajemy dodatkowy, najstarszy bit adresu An wykorzystując wejście CE (chip enable) w każdym układzie
pamięci, przy czym należy wykorzystać jakiś dekoder binarny na kod 1 z N (tu wystarczy tak naprawdę negator) -> kiedy najstarszy bit adresu
przyjmie wartość 1 to musimy wybrać nowy zestaw układów pamięci, a jak 0 to stary zestaw układów pamięci, reszta adresu zaadresuje komórkę w
odpowiednich układach pamięci.
3. Łączenie układów pamięci zależy od tego jakie układy pamięci mamy do dyspozycji.
http://ii.ap.siedlce.pl/~florek/sk/systemy_komputerowe_pliki/pamieci.html
[edytuj] Pytanie 31
odp.• v
Projektowanie układów sterowania.
[edytuj] Pytanie 32
odp.• v
Pierwsza i druga zasada indukcji matematycznej.
Pierwsza zasada indukcji matematycznej Zasada indukcji matematycznej. Jeżeli
1. istnieje taka liczba naturalna n0, że T(n0) jest zdaniem prawdziwym,
2. dla każdej liczby naturalnej n > n0 prawdziwa jest implikacja T(n-1) → T(n),
to T(n) jest zdaniem prawdziwym dla każdej liczby naturalnej n ≥ n0.
Druga zasada indukcji matematycznej Zasada indukcji matematycznej. Jeżeli
1. istnieje taka liczba naturalna n0, że T(n0) jest zdaniem prawdziwym,
2. dla każdej liczby naturalnej n > n0 prawdziwa jest implikacja ∀k ∈ < n0 ; n-1 > T(k) → T(n),
to T(n) jest zdaniem prawdziwym dla każdej liczby naturalnej n ≥ n0.
[edytuj] Pytanie 33
odp.• v
Podstawowe obiekty kombinatoryczne (wariacje, permutacje, kombinacje z i bez powtórzeń) – ich definicja i liczba.
Kombinacja (podzbiór) z powtórzeniami:
bez powtórzeń:
Wariacje z powtórzeniami (ciąg; losowanie ze zwracaniem):
V − (n,k) = nk
bez powtórzeń:
V(n,k) = C(n,k) * k!
Permutacje z powtórzeniami (np. 3 elementy n1, n2, n3 razy) to:
P − (n,n1,n2) = n! / (n1! * n2!)
bez powtórzeń:
P(n,k) = V(n,k) k rozróżnialnych elementów
http://pl.wikipedia.org/wiki/Kombinatoryka - i klikajcie na menu po prawej
[edytuj] Pytanie 34
odp.• v
Liniowa, jednorodna zależność rekurencyjna rzędu drugiego ze stałymi współczynnikami i sposób jej rozwiązywania.
Od strony 26, przykład na stronie 29
[edytuj] Pytanie 35
odp.• v
Graf pełny, dopełnienie grafu, graf dwudzielny oraz pełny graf dwudzielny – definicje.
Graf pełny - jest grafem prostym, w którym dla każdej pary węzłów istnieje krawędź je łącząca. Graf pełny o n wierzchołkach oznacza się następująco:
Kn
Graf dwudzielny - graf, którego zbiór wierzchołków można podzielić na dwa rozłączne zbiory tak, że krawędzie nie łączą wierzchołków tego samego
zbioru
Pełny graf dwudzielny - graf dwudzielny w któym pomiędzy wszystkimi parami wierzchołków należących do różnych zbiorów istnieje krawędź i
oznaczamy Kn,m gdzie n i m oznaczają liczności zbiorów wierzchołków
Dopełnienie grafu - G nazywamy graf
, zawierający te same wierzchołki co graf G, natomiast pomiędzy wierzchołkami grafu
istnieje krawędź wtedy i tylko wtedy gdy pomiędzy tymi wierzchołkami nie istnieje krawędź w grafie G
Graf pełny (pl.wiki) i z boku inne definicje
[edytuj] Pytanie 36
odp.• v
Definicja transwersali oraz twierdzenie Halla w postaci transwersalowej.
Twierdzenie_o_kojarzeniu_małżeństw - Wersja_dla_transwersal, wikipedia
[edytuj] Pytanie 37
odp.• v
Zadanie interpolacji - definicje i rodzaje.
Interpolacja, polska wikipedia
[edytuj] Pytanie 38
odp.• v
Metody rozwiązywania układów równań liniowych.
[edytuj] Pytanie 39
odp.• v
Metody rozwiązywania równań i układów równań nieliniowych.
[edytuj] Pytanie 40
odp.• v
Modele prototypowania i realizacji przyrostowej a kaskadowy model wytwarzania oprogramowania.
wikipediapl:Model kaskadowy
wikipediapl:Model prototypowy
wikipediapl:Model przyrostowy
http://wazniak.mimuw.edu.pl/images/e/e8/Io-13-wyk.pdf (nie do końca chyba to)
http://www.cs.put.poznan.pl/bwalter/IO1/Intro.pdf
[edytuj] Pytanie 41
odp.• v
Wzorce projektowe (facade, moderator, proxy, adapter, composite, decorator, observer, visitor, command, builder, factory method).
wikipediapl:Wzorzec projektowy (informatyka)
http://wazniak.mimuw.edu.pl/images/8/80/Io-8-wyk.pdf
[edytuj] Pytanie 42
odp.• v
Diagramy UML jako opis dziedziny problemu lub specyfikacja kodu.
wikipediapl:Uml
http://wazniak.mimuw.edu.pl/images/7/76/Io-5-wyk.pdf
http://wazniak.mimuw.edu.pl/images/f/f3/Io-6-wyk.pdf
[edytuj] Pytanie 43
odp.• v
Złożoność obliczeniowa problemów optymalizacyjnych, algorytmy aproksymacyjne i trudność problemów aproksymacji, matroidy i algorytmy zachłanne.
[edytuj] Pytanie 44
odp.• v
Przepływy w sieciach - sformułowanie problemu, metody rozwiązania, zastosowania.
[edytuj] Pytanie 45
odp.• v
Kolorowanie grafów - różne sformułowania problemu, metody rozwiązania, zastosowania.
[edytuj] Definicje
G = (V,E) oznacza dowolny graf nieskierowany bez równoległych krawędzi i pętli własnych, gdzie V = v1,v2,...,vn jest zbiorem wierzchołków, a E =
e1,e2,...,em jest zbiorem krawędzi.
Dwie krawędzie są przylegające, jeżeli łączą się we wspólnym wierzchołku. Dwa wierzchołki vi,vj przylegają/sąsiadują, jeżeli istnieje krawędź
, o krawędzi e mówimy, że jest incydentna z wierzchołkami vi,vj, a vi,vj przylegają do e.
Stopień deg(v) wierzchołka v, to liczba krawędzi z nim incydentnych.
Dla danego zbioru
Graf
, podgrafem indukowanym przez V' nazywamy graf
jest dopełnieniem grafu G, jeżeli E spełnia warunek:
Grafem liniowym (ang. line graph) L (G) dla grafu G jest graf, którego wierzchołki odpowiadają krawędziom G. Dwa wierzchołki L (G) sąsiadują, gdy
przylegają odpowiadające im krawędzie G.
Zbiór niezależnych wierzchołków G = (V,E) (ang. independent set, stable set), to podzbiór
taki, że żadne dwa jego wierzchołki nie sąsiadują.
Największy niezależny zbiór G to zbiór niezależnych wierzchołków G o największej liczbie elementów. α(G) oznacza liczbę elementów tego zbioru, tj.
tzw. liczba niezależna G. Maksymalny niezależny zbiór w G to zbiór niezależny w G, który nie zawiera sie w żadnym innym niezależnym zbiorze G.
Zauważmy, że maksymalny niezależny zbiór nie musi być największy.
Klika w G (in. podgraf pełny) to podgraf G(K) taki, że wierzchołki
są połączone każdy z każdym. Największa klika w G to klika, która ma
najwięcej wierzchołków. ω(G) oznacza liczbę wierzchołków takiej kliki, tj. tzw. liczba klikowa G. Zauważmy, że K jest zbiorem niezależnych
wierzchołków w G.
[edytuj] Kolorowanie grafu
Kolorowanie grafu polega w ogólności na przypisaniu określonym elementom składowym grafu (najczęściej wierzchołkom, rzadziej krawędziom lub ścianom)
wybranych kolorów według ściśle określonych reguł.
Kolorowanie wierzchołkowe
grafu G jest przydziałem kolorów 1,2,... do wierzchołków w taki sposób, że sąsiadujące wierzchołki maja różne kolory. Innymi słowy, kolorowanie jest funkcja
taka, że
. Zauważmy, że zbiór wierzchołków o tym samym kolorze jest zbiorem
niezależnych wierzchołków. Graf jest k-kolorowalny, jeżeli istnieje kolorowanie nie więcej niż k różnymi kolorami.
Liczba chromatyczna χ(G) grafu G nazywamy minimalna wartość k, dla której graf jest k-kolorowalny.
Problem kolorowania grafu: (wersja decyzyjna) Dane: G, k. Pytanie: czy G jest, k-kolorowalny? (wersja optymalizacyjna) Dane: G. Wyznaczyć χ(G).
Klasyczne (wierzchołkowe) kolorowanie grafu - przyporządkowywanie wierzchołkom grafu liczb naturalnych w taki sposób, aby końce żadnej krawędzi nie
miały przypisanej tej samej liczby. Ze względów historycznych oraz dla lepszego zobrazowania problemu mówi się o kolorowaniu, przy czym różnym kolorom
odpowiadają różne liczby.
Pokolorowaniem wierzchołków grafu nazywamy jedno konkretne przyporządkowanie kolorów wierzchołkom. Pokolorowanie jest legalne (dozwolone), gdy
końcom żadnej krawędzi nie przyporządkowano tego samego koloru.
Optymalnym pokolorowaniem danego grafu nazywamy legalne pokolorowanie zawierające najmniejszą możliwą liczbę kolorów.
Kolorowanie krawędziowe
grafu G jest przydziałem kolorów {1,2,...} do krawędzi w taki sposób, że przylegające krawędzie maja różne kolory. Innymi słowy, kolorowanie jest funkcja
taka, że
Minimalna liczba kolorów, która można
pokolorować krawędziowe G nazywana jest indeksem chromatycznym χ'(G). Zauważmy, że kolorowanie krawędziowe G jest równoważne kolorowaniu
wierzchołkowemu L(G).
Prawidłowe pokolorowanie krawędzi (legalne, właściwe) to takie przyporządkowanie krawędziom kolorów, gdzie żadne dwie sąsiednie krawędzie nie są
pokolorowane tak samo. (krawędzie są sąsiednie, jeśli mają wspólny jeden z końców).
[edytuj] Złożoność obliczeniowa problemu
Problem kolorowania grafu jest NP-zupełny [Karp 1972]. Problem kolorowania grafu jest NP-zupełny dla k większego równego 3 [Garey, Johnson,
Stockmeyer 1976].
Znane są algorytmy o oszacowaniach jakości
O ile
1976].
to dla problemu kolorowania, nie istnieje wielomianowy algorytm aproksymacyjny o oszacowaniu lepszym niż 2 [Garey, Johnson
O ile
to dla problemu kolorowania, wyznaczenie kolorowania ne neχ(G) kolorami jest NP-trudne, dla dowolnego e > 0.
Problem krawędziowego kolorowania grafu jest NP-trudny. Zauważmy, że problem kolorowania krawędziowego jest trudny mimo bardzo dobrych
oszacowań, dolnego i górnego.
[edytuj] Metody rozwiązywania problemu
1. Algorytmy dokładne
1.
Algorytm Christofidesa
Jeżeli graf jest k-kolorowalny, to można pokolorować kolorem 1 pewien maksymalny zbiór niezależny S1 w G, następnie kolorem 2 maksymalny zbiór
niezależny S2 w G(V − S2), ... , kolorem k maksymalny zbiór Sk w
Problem polega na wskazaniu, który maksymalny zbiór niezaleŜnych wierzchołków wybrać na danym etapie. Niech Dr, r = 1, 2, ..., oznacza rodzinę (tj. zbiór
zbiorów) wszystkich maksymalnych niezależnych zbiorów wierzchołków, które indukują l-kolorowalne podgrafy G.
Algorytm Christofidesa polega na budowaniu rodzin
O(mn2.445n).
1.
, aż do osiągnięcia
. Wówczas k = χ(G). Algorytm ma złożoność
Niejawny algorytm wyliczeniowy (ang. implicit enu-meration).
Składa się z dwóch faz: forward phase i backtracking. Iinitial forward: ponumeruj wierzchołki wg jakiejś procedury np. (v1,v2,...,vn), pokoloruj kolejno
wierzchołki minimalnym dopuszczalnym kolorem. To wyznacza kolorowanie UB kolorami. Backtracking: cofając się od vn znajdź wierzchołek vj, który można
dopuszczalnie pokolorować kolorem a < UB, który nie był dotychczas stosowany dla vj (przebiegamy przez wierzchołki, a w wierzchołku przez dopuszczalne
kolory alternatywne).
Pokoloruj vj kolorem a. Forward: koloruj wierzchołki vj + 1,...,vn aż do momentu gdy:
a) osiągnięty zostanie wierzchołek vj, który wymaga koloru
zakończ faze forward b) osiągnięty zostanie wierzchołek, vn => uaktualnij UB
Przejdz do fazy backtracking. Algorytm zatrzymuje sie, gdy osiągnięty zostanie wierzchołek v1.
1. Dedykowane heurystyki
1.
Algorytm RS (Random Sequential)
Porządek wierzchołków jest losowy. Współczynnik jakości w najgorszym przypadku SRS jest O(n). Graf trudny nie istnieje.
1.
Algorytm LF (Largest First)
Wierzchołki o niskim stopniu maja mało sąsiadów, dlatego pozwalają na większą swobodę w doborze koloru, dlatego naleŜy je kolorować, jako ostatnie.
Wierzchołki są uporządkowane wg nierosnących stopni w grafie. Współczynnik jakości w najgorszym przypadku SRS jest O(n).
Kolorowanie grafu za pomocą algorytmu LF można opisać następująco:
1. Uporządkuj wierzchołki grafu malejąco według ich stopni (liczby krawędzi z nich wychodzących). 2. Koloruj wierzchołki zachłannie, zgodnie z ustaloną
wcześniej kolejnością (zaczynając od wierzchołka o największym stopniu).
Algorytm LF jest algorytmem statycznym, gdyż raz ustalona kolejność wierzchołków nie zmienia się w trakcie jego działania.
1.
Algorytm SLF (Saturation Largest First, Dsatur)
Wierzchołki są porządkowane w trakcie działania algorytmu na podstawie stopnia saturacji p(v), tj. liczby różnych kolorów, którymi są pomalowani sąsiedzi
wierzchołka. Koloruje się wierzchołki od największego p(v) do najmniejszego, w razie remisu wybierany jest wierzchołek o większym stopniu. Współczynnik
jakości w najgorszym przypadku SSLF jest O(n).
1.
Algorytm SL (smallest last)
Algorytm SL wygląda następująco: 1. Znajdź wierzchołek o minimalnym stopniu i usuń go z grafu. 2. Powtarzaj krok pierwszy tak długo, aż graf będzie pusty
(zapamiętaj kolejność usuwanych wierzchołków). 3. Koloruj wierzchołki zachłannie, zgodnie z ustaloną wcześniej kolejnością (zaczynając od wierzchołków
usuniętych później).
Algorytm SL jest statyczny, jego złożoność wynosi O(n + m), gdzie n - liczba wierzchołków, m - liczba krawędzi. Algorytm SLF (saturated largest first)
Kolorowanie grafu przy pomocy algorytmu SLF polega na wykonaniu poniższych czynności:
dopóki istnieją nie pokolorowane wierzchołki wykonuj operacje: { znajdź wierzchołek o maksymalnym stopniu spośród wierzchołków o maksymalnym stopniu
nasycenia pokoloruj znaleziony wierzchołek zachłannie }
Stopniem nasycenia wierzchołka nazwiemy tu liczbę różnych kolorów adjacentnych (sąsiednich) z tym wierzchołkiem. ZłoŜoność algorytmu SLF wynosi
O(mlogn).
1.
Algorytm CS (Connected Sequential)
Wierzchołki uporządkowane sa tak, aby kaŜdy kolejny wierzchołek (za wyjątkiem pierwszego) miał, co najmniej jednego sąsiada wśród poprzedzających go w
uporządkowaniu. Może to być np. porządek przeglądania rafu w głąb (DFS), wszerz (BFS). Współczynnik jakości w najgorszym przypadku SCS jest O(n).
1.
Algorytm GIS (Greedy Independent Set)
Wierzchołki grafu rozwaŜa sie w pewnej kolejności i przypisuje wierzchołkowi vi kolor c jesli nie koliduje to z innymi wierzchołkami o kolorze c. Po
wyczerpaniu możliwości kolorowania kolorem c, pokolorowane wierzchołki są usuwane z grafu, a pozostałe wierzchołki kolorowane są następnym kolorem.
Współczynnik jakości w najgorszym przypadku Sgis jest O(nlogn).
1.
Algorytm RLF (Recursive LF)
Działa podobnie jak GIS, jednak do pokolorowania wybiera sie wierzchołek v, który ma najwięcej sąsiadów z zabronionym aktualnym kolorem c, gdyż
pokolorowanie v kolorem c nie zmieni już statusu tych sąsiadów. Współczynnik jakości w najgorszym przypadku SRLF jest O(nlogn)
[edytuj] Zastosowania
Szeregowanie zadań niepodzielnych o jednostkowym czasie wykonania i o określonych żądaniach zasobowych, w celu minimalizacji długości
uszeregowania. Zadania można przedstawić, jako wierzchołki grafu, a konflikty w żądaniach zasobowych, jako krawędzie grafu. Wierzchołki o tym
samym kolorze odpowiadają zadaniom, które można wykonywać jednocześnie. Minimalna liczba kolorów określa długość uszeregowania.
Projektowanie testów aparatury elektronicznej. Aparatura elektroniczna składa się z modułów, które wzajemnie sie testują. Należy przeprowadzić szereg
testów, które nie mogą być wykonywane jednocześnie na tych samych modułach. Poszczególne testy można przedstawić, jako wierzchołki grafu.
Krawędzie występują miedzy wierzchołkami-testami, gdy nie można ich wykonywać jednocześnie. Ten sam kolor określa testy, które, które moŜna
wykonywać jednocześnie.
Na analogicznej zasadzie problem kolorowania grafu występuje w układaniu planów zajęć, spotkań, rozkładów jazdy itp. Zajęcia/spotkania/przejazdy to
zadania/wierzchołki, krawędzie to konflikty zasobowe miedzy nimi.
Przydział rejestrów procesorów do zmiennych w programach. Przechowywanie zmiennych w rejestrach jest korzystne ze względu na szybkość wykonania
programu. Zwykle rejestrów jest mniej niż zmiennych, dlatego należy przydzielać wiele różnych zmiennych do tych samych rejestrów. Niech wierzchołki
odpowiadają zmiennym. Krawędzie istnieją miedzy kolidującymi zmiennymi. Dwie zmienne kolidują, gdy jedna z nich jest używana przed i po użyciu
drugiej zmiennej. Ten sam kolor jest bezkolizyjnym przydziałem zmiennych do tego samego rejestru. Jeżeli liczba chromatyczna jest mniejsza niż liczba
rejestrów, to bezkolizyjny przydział do rejestrów jest możliwy. W przeciwnym przypadku naleŜy dodać tzw. spili code umożliwiający odwoływanie się
do zmiennych w pamięci. Wierzchołki odpowiadające zmiennym przeniesionym do PAO, usuwa się z grafu aż do zrównania liczby rejestrów z liczbą
chromatyczna.
Przydział częstotliwości dla nadajników stacji radiowych. Nadajniki radiowe można prezentować, jako wierzchołki grafu, a możliwość wystąpienia
interferencji, jako krawędzie. Minimalna liczba kolorów określa minimalną liczbę pasm częstotliwości, jaką należy przydzielić stacjom w celu uniknięcia
interferencji.
[edytuj] Pytanie 46
odp.• v
Podstawowe mechanizmy programowania obiektowego.
Enkapsulacja
Czyli ukrywanie implementacji, hermetyzacja. Zapewnia, że obiekt nie może zmieniać stanu wewnętrznego innych obiektów w nieoczekiwany sposób. Tylko
wewnętrzne metody obiektu są uprawnione do zmiany jego stanu. Każdy typ obiektu prezentuje innym obiektom swój "interfejs", który określa dopuszczalne
metody współpracy. Pewne języki osłabiają to założenie, dopuszczając pewien poziom bezpośredniego (kontrolowanego) dostępu do "wnętrzności" obiektu.
Reguła 1: Żaden atrybut nie jest widoczny poza klasą, w której jest zdefiniowany (Ukrywaj wszystko, co można ukryć)
Reguła 2: Metoda jest widoczna jeżeli jest używana przez inną klasę (Oddziel swoje klasy)
Reguła 3: Wykorzystanie interfejsów
Związane z pojęciem mechanizmy: widoczność (private, public itp.), przyjaciele (C++), interfejsy
Polimorfizm
Polimorfizm jest zdolnością niektórych obiektów do przybrania różnych postaci. Referencje i kolekcje obiektów mogą dotyczyć obiektów różnego typu, a
wywołanie metody dla referencji spowoduje zachowanie odpowiednie dla pełnego typu obiektu wywoływanego. Jeśli dzieje się to w czasie działania programu,
to nazywa się to późnym wiązaniem lub wiązaniem dynamicznym. Niektóre języki udostępniają bardziej statyczne (w trakcie kompilacji) rozwiązania
polimorfizmu - na przykład szablony i przeciążanie operatorów w C++ (nazywa się to parametryczny polimorfizm).
Związane z pojęciem mechanizmy: przeciążanie metod (wiele metod z różnymi argumentami, sprawdzenie w czasie kompilacji), nadpisanie metod (jedna metoda
w wielu interfejsach, klasach, podklasach - różne implementacje, sprawdzenie w czasie wykonania ang. overriding, late binding, dynamic binding, run-time
binding), rzutowanie (konwersja danego obiektu do innej postaci)
Dziedziczenie
Porządkuje i wspomaga polimorfizm i enkapsulację dzięki umożliwieniu definiowania i tworzenia specjalizowanych obiektów na podstawie bardziej ogólnych.
Dla obiektów specjalizowanych nie trzeba redefiniować całej funkcjonalności, lecz tylko tę, której nie ma obiekt ogólniejszy. W typowym przypadku powstają
grupy obiektów zwane klasami, oraz grupy klas zwane drzewami. Odzwierciedlają one wspólne cechy obiektów. Dziedziczenie umożliwia m.in. zmiana
definicji metod w podklasie, specjalizację klas, ponowne wykorzystanie kodu.
Związane z pojęciem mechanizmy: dziedziczenie z klas, dziedziczenie z interfejsów, klasy i metody abstrakcyjne, wielodziedziczenie, metody partial
Abstrakcja
Wykorzystywane obiekty posiadają swoją odpowiedzialność - posiadają stan (pola, properties) oraz pewne zdolności (metody). Każdy obiekt w systemie służy
jako model abstrakcyjnego "wykonawcy", który może wykonywać pracę, opisywać i zmieniać swój stan, oraz komunikować się z innymi obiektami w systemie
Związane z pojęciem mechanizmy: klasy, pola, właściwości, metody, metody statyczne
[edytuj] Pytanie 47
Paradygmat programowania deklaratywnego a inne paradygmaty programowania (strukturalny, obiektowy) - cechy charakterystyczne, różnice,
interpretacja deklaratywna a proceduralna programu.
odp.• v
http://pl.wikipedia.org/wiki/Paradygmat_programowania
[edytuj] Pytanie 48
Efektywność programów prologowych - źródła niskiej efektywności programów prologowych, metody ogólne poprawy efektywności i metody szczególne
charakterystyczne dla języka Prolog.
odp.• v
Źródła w architekturze PC, niekompatybilnej z mechanizmem wnioskowania Prologu. Przetwarzanie numeryczne mało efektywne, ale większa efektywność
programisty przy tworzeniu algorytmów operujących na symbolicznych i strukturalnych reprezentacjach.
Poprawa efektywności: kompilacja, zmiana porządku klauzul, mechanizm odcięć, negacja (fail), lepsze formy przechowywania danych, przechowywanie
wyników pośrednich; Problem zamkniętego świata
[edytuj] Pytanie 49
odp.• v
Kreślenie obiektów 2D przy wykorzystaniu obiektów rastrowych.
[edytuj] Pytanie 50
odp.• v
Wizualizacja obiektów przestrzennych.
[edytuj] Pytanie 51
odp.• v
Relacyjny model danych (struktury danych, operacje, ograniczenia integralnościowe).
Jednym z fundamentalnych modeli jest model relacyjny. Jest on wykorzystywany w większości komercyjnych i niekomercyjnych systemów baz danych. W
modelu tym, strukturą danych jest relacja; operacje na danych obejmują selekcję, projekcję, połączenie i operacje na zbiorach. Ograniczenia integralnościowe w
tym modelu to: klucz podstawowy, klucz obcy, zawężenie dziedziny, unikalność wartości, możliwość nadawania wartości pustych/niepustych.
[edytuj] Struktury danych
W modelu relacyjnym, baza danych jest zbiorem relacji. Każda relacja posiada swój tzw. schemat, który składa się z listy atrybutów. Schemat relacji R jest
często oznaczany jako R(A1, A2, ..., An), gdzie A1, A2, ..., An oznaczają atrybuty. Liczbę atrybutów składających się na schemat relacji R nazywamy stopniem
relacji. Każdy atrybut posiada swoją domenę, zwaną także dziedziną. Definiuje ona zbiór wartości jakie może przyjmować atrybut poprzez określenie tzw. typu
danych, np. liczba całkowita, data, ciąg znaków o długości 30. Relacja jest zbiorem krotek
[edytuj] Operacja
W modelu relacyjnym wykorzystuje się tzw. algebrę relacji, definiującą zbiór operacji na danych i semantykę tych operacji. Operacjami tymi są:
selekcja - umożliwia wyodrębnienie podzbioru krotek relacji, które spełniają warunek selekcji, oznaczane sigma. Warunek selekcji jest zbiorem
predykatów postaci <atrybut><operator relacyjny><literał> lub <atrybut><operator relacyjny><atrybut>.
projekcja - Umożliwia ona wyodrębnienie (wybór) tylko określonych atrybutów relacji. Operacja ta jest oznaczana symbolem pi z podzbiorem
wybieranych atrybutów z całego zbioru atrybutów relacji.,
połączenie - Operacja połączenia umożliwia łączenie wybranych krotek z dwóch relacji w pojedynczą krotkę. Krotki są łączone na podstawie podanego
warunku połączeniwego. Warunek połączeniowy jest zbiorem predykatów połączonych operatorami logicznymi AND. Predykaty te są postaci: AiθBj,
iloczyn kartezjański jako specjalny przypadek połączenia
operacje na zbiorach (suma, część wspólna i różnica).
[edytuj] Ograniczenia integralnościowe
Każda relacja może posiadać jawnie zdefiniowane ograniczenia integralnościowe. Ograniczenie integralnościowe jest pewną regułą gwarantującą, że dane
znajdujące się w relacji spełniają tę regułę. W praktyce nad zapewnieniem integralności danych czuwa SZBD. Ograniczenie integralnościowe definiuje się albo
dla pojedynczego atrybutu albo dla całej relacji. Wyróżnia się następujące ograniczenia integralnościowe:
klucz podstawowy (primary key),
klucz obcy (foreign key),
unikalność (unique),
zawężenie domeny/dziedziny (check),
wartość pusta/niepusta (NULL/NOT NULL).
Więcej Wykład wprowadzający i Wykład "Relacyjny model danych"
[edytuj] Pytanie 52
odp.• v
Projektowanie baz danych (model ER, transformacja modelu ER do postaci relacyjnej, proces normalizacji).
[edytuj] Model związków-encji
Jednym z fundamentalnych modeli konceptualnych wykorzystywanym w projektowaniu relacyjnych baz danych jest model związków-encji (ang. entityrelationship model - ER). W tym modelu, obiekty świata rzeczywistego są reprezentowane za pomocą encji (ang. entities), a powiązania między obiektami - za
pomocą związków pomiędzy encjami (ang. relationships).
Encja reprezentuje zbiór obiektów opisany tymi samymi cechami (atrybutami, własnościami). Modelując encje należy przestrzegać następujących reguł:
1.
2.
3.
4.
5.
Każda encja posiada unikalną nazwę.
Każda encja posiada zbiór cech (atrybutów).
Encje wchodzą w związki z innymi encjami (wyjątkiem są encje reprezentujące dane słownikowe i konfiguracyjne).
Dowolna rzecz lub obiekt może być reprezentowana tylko przez jedną encję.
Nazwa encji powinna być rzeczownikiem w liczbie pojedynczej.
Kolejnym obiektem modelu ER jest związek, zwany również asocjacją. Reprezentuje on powiązania pomiędzy obiektami świata rzeczywistego. W modelu ER
związek łączy encje. Każdy związek posiada trzy cechy, tj. stopień związku, typ asocjacji i istnienie.
Stopień związku określa liczbę encji połączonych związkiem. Wyróżnia się związki:
unarne (łączące encję samą z sobą),
binarne (łączące dwie encje),
ternarne (łączące trzy encje),
n-arne (łączące n encji).
Typ asocjacji, zwany kardynalnością związku, określa ile wystąpień jednej encji może być powiązanych z iloma wystąpieniami innej encji. Wyróżnia się
związki:
1:1,
1:M,
M:N.
Istnienie, zwane również klasą przynależności związku określa, czy związek jest opcjonalny, czy obowiązkowy.
Więcej w wykładzie 3
[edytuj] Reguły transformacji encji
1. Encja jest odwzorowywana w relację. Nazwa encji jest odwzorowywana w nazwę relacji. Uwaga: przyjmuje się, że nazwy relacji są rzeczownikami w
liczbie mnogiej.
2. Atrybut encji jest odwzorowywany w atrybut relacji. Nazwy atrybutów encji są odwzorowywane w nazwy atrybutów relacji.
3. Typ danych atrybutu encji jest odwzorowywany w odpowiadający mu typ danych atrybutu relacji.
4. Unikalny identyfikator encji jest transformowany w klucz podstawowy relacji.
5. Obowiązkowość atrybutów encji jest reprezentowana w relacji w postaci ograniczenia NOT NULL zdefiniowanego na atrybucie relacji odpowiadającym
atrybutowi encji.
6. Opcjonalność atrybutów encji jest reprezentowana w relacji w postaci ograniczenia NULL zdefiniowanego na atrybucie relacji odpowiadającym
atrybutowi encji.
7. Oganiczenia integralnościowe dla atrybutów encji (unikalność, zawężenie dziedziny) są transformowane do odpowiadających im ograniczeń
integralnościowych relacji.
[edytuj] Reguły transformacji związków
Związek binarny - związek pomiędzy dwoma różnymi encjami. Związek unarny - związek rekurencyjny encji.
Związek binarny 1:1 transformowany jest na dodatkowe pole w dowolnej ze stron będące kluczem obcym na klucz główny drugiej ze stron. Na pole
dodatkowe nakładane jest ograniczenie unikalności.
Związek unarny 1:1 transformowany jest na dodatkowe pole w tabeli będące kluczem obcym na klucz główny tej samej tabeli. Na pole dodatkowe
nakładane jest ograniczenie unikalności.
Związek binarny 1:M transformowany jest na dodatkowe pole w tabeli po stronie "wiele" będące kluczem obcym na klucz główny tabeli po stronie
"jeden".
Związek unarny 1:M transformowany jest na dodatkowe pole w tabeli będące kluczem obcym na klucz główny tej samej tabeli.
Związek binarny M:N transformowany jest w dodatkową tabelę zawierającą pola odpowiadające polom kluczy głównych obu związanych encji. Każde z
pól osobno jest kluczem obcym na klucz główny wskazywanej tabeli. Oba pola naraz stanowią klucz główny nowo powstałej tabeli.
Związek unarny M:N transformowany jest w dodatkową tabelę zawierającą pola będące, każde z osobna, kluczami obcymi na klucz główny tabeli
podstawowej. Oba pola naraz stanowią klucz główny nowo powstałej tabeli.
Powyższe przykłady zostały opisane dla przypadku, kiedy klucze główne tabel będących w relacji zawierają po jednym polu. W ogólności klucz główny może
składać się z wielu pól. Wtedy do tabel wskazujących dodawane są wszystkie pola klucza głównego tabeli wskazywanej, a klucz obcy obejmuje wszystkie
dodane pola.
Więcej w wykładzie 4
[edytuj] Normalizacja
Motywacja:
redundancja danych - problem spójności danych
anomalia wprowadzania danych
anomalia usuwania danych
anomalia uaktualniania danych
Proces normalizacji musi posiadać trzy dodatkowe własności:
Własność zachowania atrybutów - żaden atrybut nie zostanie zagubiony w trakcie procesu normalizacji.
Własność zachowania informacji - dekompozycja relacji nie prowadzi do utraty informacji, tj. łącząc zdekomponowane relacje możemy odtworzyć
oryginalną relację.
Własność zachowania zależności - wszystkie zależności funkcyjne są reprezentowane w pojedynczych schematach relacji.
Proces normalizacji schematu relacji polega na sprawdzeniu czy dany schemat jest w odpowiedniej postaci normalnej, jeżeli nie wówczas następuje
dekompozycja schematu relacji na mniejsze schematy relacji. Ponownie, weryfikowana jest postać normalna otrzymanych schematów relacji. Jeżeli nie spełniają
one zadanej postaci normalnej to proces dekompozycji jest kontynuowany dopóki otrzymane schematy relacji nie będą w odpowiedniej postaci normalnej.
[edytuj] Pierwsza postać normalna 1NF
Dana relacja r o schemacie relacji R znajduje się w pierwszej postaci normalnej (1NF), jeżeli wartości atrybutów są atomowe (niepodzielne).
[edytuj] Druga postać normalna 2NF
Dana relacja r o schemacie R jest w drugiej postaci normalnej (2NF), jeżeli żaden atrybut wtórny tej relacji nie jest częściowo funkcyjnie zależny od żadnego z
kluczy relacji r.
[edytuj] Trzecia postać normalna 3NF
Dana relacja r o schemacie R jest w trzeciej postaci normalnej (3NF), jeżeli dla każdej zależności funkcyjnej
następujących warunków:
w R spełniony jest jeden z
X jest nadkluczem schematu R, lub
A jest atrybutem podstawowym schematu R.
[edytuj] Postać normalna Boyce'a-Codda BCNF
Dana relacja r o schemacie R jest w postaci normalnej Boyce’a-Codda (BCNF), jeżeli dla każdej zależności funkcyjnej
następujący warunek:
w R spełniony jest
X jest nadkluczem schematu R.
[edytuj] Czwarta postać normalna 4NF
Relacja r o schemacie R jest w czwartej postaci normalnej (4NF) względem zbioru zależności wielowartościowych MVD jeżeli jest ona w 3NF i dla każdej
zależności wielowartościowej
zależność ta jest trywialna lub X jest nadkluczem schematu R.
[edytuj] Słowniczek
Nadklucz - dowolny podzbiór atrybutów B z A taki, że zachodzi zależność funkcyjna B -> A.
Wartość każdego atrybutu jest jednoznacznie zdeterminowana przez wartości atrybutów zbioru B.
Jednym z nadkluczy jest zawsze zbiór wszystkich atrybutów A.
atrybuty podstawowe: atrybut X jest podstawowy w
schemacie R jeżeli należy do któregokolwiek z kluczy schematu R
atrybuty wtórne: atrybut X jest wtórny w schemacie R
jeżeli nie należy do żadnego z kluczy schematu R
Więcej w wykładzie 5
[edytuj] Pytanie 53
odp.• v
Transakcja i jej własności.
Transakcja jest sekwencją logicznie powiązanych operacji na bazie danych, która przeprowadza bazę danych z jednego stanu spójnego w inny stan spójny. Typy
operacji na bazie danych obejmują: odczyt i zapis danych oraz zakończenie i akceptację (zatwierdzenie), lub wycofanie transakcji.
Każda transakcja posiada cztery cechy:
atomowość (ang. Atomicity) - oznacza, że zbiór operacji wchodzących w skład transakcji jest niepodzielny, to znaczy albo zostaną wykonane wszystkie
operacje transakcji albo żadna. Dotyczy to również wszystkich operacji transakcji wykonywanych na obiektach rzeczywistych (tak zwane akcje
rzeczywiste) – np. wypłata gotówki z bankomatu,
spójność (ang. Consistency) - Spójność oznacza, że transakcja przeprowadza bazę danych z jednego stanu spójnego do innego stanu spójnego. W trakcie
wykonywania transakcji baza danych może być przejściowo niespójna. Transakcja nie może naruszać ograniczeń integralnościowych.
izolacja (ang. Isolation) - Izolacja oznacza, że transakcje są od siebie logicznie odseparowane. Transakcje oddziałują na siebie poprzez dane. Mimo
współbieżnego wykonywania, transakcje widzą stan bazy danych tak, jak gdyby były wykonywane w sposób sekwencyjny.
trwałość (ang. Durability) - Trwałość oznacza, że wyniki zatwierdzonych transakcji nie mogą zostać utracone w wyniku wystąpienia awarii systemu.
Zatwierdzone dane w bazie danych, w przypadku awarii, muszą być odtwarzalne
Więcej wykład Przetwarzanie tranzakcyjne
[edytuj] Pytanie 54
odp.• v
Odtwarzanie spójnego stanu bazy danych po awarii.
Cel odtwarzania: odtworzenie spójnego stanu bazy danych po awarii. (dokładniej A. D. – atomowość oraz trwałość). Uwaga: prawdopodobnie nie jest to „stan
bazy sprzed awarii”, gdyż w praktyce baza danych rzadko jest w stanie spójnym w związku z chęcią uzyskania współbieżności transakcji.
Miara efektywności odtwarzania: dostępność systemu = MTTF / (MTTF + MTTR)
Elementy składowe modułu odtwarzania: baza danych + jej bufor, log (append-only) + jego bufor
Czy można podać taką strategię zarządzania buforem danych, aby dane w bazie danych były zawsze spójne? NIE Innymi słowy, czy konieczny jest osobny
mechanizm gwarantujący poprawne odtworzenie bazy danych po awarii? TAK Nie ma znaczenia czy stosujemy bufor bazy danych + LRU, czy zapisujemy od
razu wszystko na dysk. Jako, że system nie zna intencji przerwanych transakcji, wszystkie transakcje aktywne muszą zostać wycofane, a zatwierdzone trwale
wprowadzone do bazy.
Zapis bufora logu: zatwierdzenie transakcji, przepełnienie bufora. Stosowana jest architektura tzw. double-buffered disk write, tj. w momencie, gdy cześć bufora
logu jest zapisywana na dysk do pliku logu, druga cześć bufora jest dostępna dla nowo generowanych rekordów logu
(S, i): oznacza rekord inicjacji transakcji Ti;
(W, i, a, x, y): oznacza rekord zapisu danej a przez transakcje Ti, poprzednia
wartość danej x (before image), nowa wartość danej y (after image);
(C, i): oznacza rekord akceptacji transakcji Ti;
Procedura odtwarzania bazy danych po awarii jest wykonywana w dwóch fazach: ROLLBACK i ROLL FORWARD.
ROLLBACK, rekordy logu są odczytywane w odwrotnej kolejności. UNDO wszystkich operacji aktualizacji transakcji, które nie zostały zaakceptowane.
ROLL FORWARD, odczytywanie w oryginalnej kolejności. REDO wszystkich operacji aktualizacji transakcji, które zostały zaakceptowane.
(S, 1), .(W,1,a,50,20),.(S, 2), .(W,2,c,100,50), .(C, 2).
ROLLBACK:
(C, 2) wstaw T2 do listy transakcji zaakceptowanych;
(W,2,c,100,50) T2 na liście transakcji zaakceptowanych – nie rób nic;
(S, 2) T2 na liście transakcji zaakceptowanych – nie rób nic;
(W,1,a,50,20) T1 – aktywna, wykonaj UNDO operacji aktualizacji – dana a przyjmuje wartość 50 (before image);
(S, 1) Transakcja T1 pasywna. => W fazie Rollback została wykonana operacja UNDO dla transakcji T1, która była aktywna w momencie wystąpienia
awarii.
ROLL FORWARD:
(S, 1) - dla pierwszego rekordu logu transakcja T1 jest inicjowana i system nie podejmuje żadnej akcji;
(w,1,a,50,20) - dla drugiego rekordu logu transakcja T1 jest aktywna i system nie podejmuje żadnej akcji;
(S, 2) - podobnie jest dla trzeciego rekordu logu, który opisuje inicjowanie transakcji T2;
(w,2,c,100,50) - dla czwartego rekordu logu, transakcja T2 znajduje się na liście transakcji zaakceptowanych; system wykonuje operację REDO operacji
aktualizacji – dana c przyjmuje wartość 50 (after image);
(C,2) - piąty rekord logu oznacza zatwierdzenie transakcji drugiej, a system nie podejmuje żadnej akcji.
W fazie Roll Forward została wykonana operacja REDO dla transakcji T2, która została zaakceptowana wcześniej, przed wystąpieniem awarii.
Poprawność?, gdy:
zapis na dysk jest realizowany w sposób atomowy (np. mechanizm „read after write”)
akceptacja transakcji + zapis bufora logu = akcja atomowa, tj. jeżeli z jakiś względów nie udało się zapewnić zapisu bufora logu do pliku logu, to oznacza
to brak
akceptacji transakcji.
ROLL FORWARD. Transakcja nie jest zaakceptowana, jeżeli nie zostanie zapisany bufor logu. Jeżeli bufor logu zostanie zapisany, to wszystkie rekordy logu,
zapisywane do bufora logu, znajdą się na dysku. To gwarantuje poprawność realizacji procedury ROLL FORWARD, tj. gwarantuje, że wszystkie zmiany
wprowadzone do bazy danych przez zaakceptowane transakcje znajdą się na dysku (mechanizm REDO w fazie ROLL FORWARD).
ROLLBACK Strony zmodyfikowane przez nie zaakceptowane transakcje mogą być zapisane na dysk (np. przez LRU), natomiast tych zmian nie można
wycofać w oparciu o rekordy logu zapisane w pliku logu.
Czy może to stwarzać problemy przy odtwarzaniu? TAK
Rozwiązanie A: zawiesić działanie procedury LRU
Rozwiązanie B: zmodyfikować LRU
Wszystkie brudne strony pozostają w buforze do momentu akceptacji transakcji - procedura UNDO nie jest wówczas potrzebna Rozwiązaniem jest technika
„write ahead log” (WAL) i sekwencyjne numery logu LSN (ang. Log sequence numbers) System bazy danych utrzymuje licznik, który generuje rosnącą
sekwencję LSN
LSN jest liczbą całkowitą, przypisywaną do każdego rekordu logu zapisywanego do bufora logu
LSN_BUFFMIN - SBD przechowuje również najmniejszą wartość LSN strony, od czasu ostatniego zapisu bufora na dysk
LSN_PGMAX - dla każdej strony w buforze danych, system pamięta wartość ostatniej LSN operacji, która aktualizowała daną na tej stronie
Reguła modyfikacji LRU: dana strona w buforze może zostać zapisana na dysk (zgodnie z LRU), wtedy i tylko wtedy gdy jej LSN_PGMAX < LSN_BUFFMIN
Reguła ta gwarantuje, że dana strona nie zostanie zapisana na dysku, jeżeli wcześniej nie zostanie zapisany na dysku odpowiedni rekord logu
Do jakiego stanu należy się cofnąć wykonując procedurę ROLLBACK? – do momentu inicjacji (startup) systemu – do stanu określonego przez użytkownika
Problem:
procedura ROLLBACK - większość transakcji to krótkie transakcje aktualizacji - stosunkowo efektywna, no problem,
procedura ROLL FORWARD – konieczność przetworzenia całego pliku logu - niska efektywność – „wykonanie wszystkich transakcji jeszcze raz”
Solution: Punkt kontrolny (ang. checkpoint) - punkt na osi czasu, od którego i do którego są realizowane procedury ROLLBACK i ROLL FORWARD. Punkty
kontrolne są tworzone w trakcie działania systemu bazy danych i ograniczają konieczność przetwarzania całego pliku logu w procedurze odtwarzania. Po
pierwsze, plik logu narasta bardzo szybko i możemy nie posiadać możliwości, aby przechowywać cały plik logu. Po drugie, przetwarzanie całego pliku logu
byłoby niezmiernie kosztowne czasowo. Trzy ogólne podejścia do tworzenia punktów kontrolnych w systemie bazy danych to:
punkt kontrolny akceptacyjnie spójny (ang. commit-consistent checkpointing),
punkt kontrolny spójny z pamięcią podręczną (ang. cache-consistent checkpointing),
punkt kontrolny rozmyty (ang. fuzzy checkpointing).
Więcej w wykładzie 11
[edytuj] Pytanie 55
odp.• v
Zarządzanie współbieżnym wykonywaniem transakcji.
Algorytmy zarządzania współbieżnym wykonywaniem transakcji możemy sklasyfikować następująco:
algorytmy blokowania - uszeregowanie transakcji wynika z kolejności uzyskiwanych blokad (algorytm blokowania dwufazowego – 2PL);
algorytmy znaczników czasowych - uszeregowanie transakcji wynika z wartości znaczników czasowych związanych z transakcjami;
algorytmy optymistyczne - walidacja poprawności uszeregowania.
[edytuj] Algorytmy blokowania
Blokada jest zmienną skojarzoną z każdą daną w bazie danych, określającą dostępność danej ze względu na możliwość wykonania na niej określonych operacji.
Ogólnie, z każdą daną mamy skojarzoną jedną blokadę. Ze względu na proces blokowania, dane w bazie danych mogą występować w jednym z trzech stanów:
dana nie zablokowana (0),
dana zablokowana dla odczytu R (współdzielona S),
dana zablokowana dla zapisu W (wyłączna X).
Istotna jest kolejność zakładania i zdejmowania blokad. Ilustruje to podstawowy algorytm blokowania, nazywany algorytmem blokowania dwu-fazowego (2PL).
Podstawowa wersja algorytmu 2PL ma następującą postać:
1. Każda operacja odczytu danej X przez transakcję T (read(X)) musi być poprzedzona operacją zablokowania danej X w trybie do odczytu (R_lock(X, T))
lub w trybie do zapisu (W_lock(X, T)).
2. Każda operacja zapisu danej X przez transakcję T (write(X)) musi być poprzedzona operacją W_lock(X, T).
3. Operacje odblokowania danej X (unlock(x,T)) dla danej transakcji T są wykonywane po zakończeniu wszystkich operacji read i write.
Jak widać z przedstawionego schematu, realizacja transakcji, zgodnie z algorytmem 2PL, przebiega w dwóch fazach (stąd nazwa algorytmu): w fazie ekspansji
oraz w fazie zwijania. W fazie ekspansji transakcja zakłada blokady kolejnych danych, nie zwalniając żadnej z uzyskanych blokad, aż do osiągnięcia punktu
akceptacji. W fazie zwijania transakcja zwalnia blokady wszystkich danych, nie może żądać natomiast założenia żadnej blokady.
[edytuj] Algorytmy ze znacznikami czasowymi
W przypadku algorytmów znaczników czasowych, uszeregowanie transakcji będących w konflikcie wynika z porządku znaczników czasowych przydzielanych
transakcjom w momencie ich inicjacji. Porządek jest więc predefiniowany, a nie ustalany dynamicznie, jak w przypadku algorytmów blokowania. Znacznik
czasowy (ang. timestamp) transakcji T (TS(T)), jest unikalnym identyfikatorem transakcji. Znaczniki są przydzielone transakcjom w kolejności, w której
transakcje pojawiają się w systemie bazy danych. Z każdą daną (x) w bazie danych związane są dwie wartości znaczników czasowych:
Read_TS(x) - największy znacznik czasowy spośród wszystkich transakcji, które pomyślnie odczytały tę daną.
Write_TS(x) - największy znacznik czasowy spośród wszystkich transakcji, które pomyślnie zapisały tę daną.
[edytuj] Algorytmy optymistyczne
Podstawowym założeniem metod optymistycznych jest założenie, że konflikty pomiędzy transakcjami występują stosunkowo rzadko (stąd nazwa metody), stąd
algorytm powinien być maksymalnie mało restryktywny jeżeli chodzi o ograniczenie dostępu do danych dla współbieżnie wykonywanych transakcji.
Wykonywanie transakcji w metodzie optymistycznej przebiega w trzech fazach:
Fazie odczytu: Transakcje czytają dane z bazy danych. Wprowadzane modyfikacje są przechowywane w lokalnych obszarach roboczych transakcji.
Fazie walidacji: Wykonywana jest walidacja uszeregowalności transakcji. Transakcje nie spełniające kryterium uszeregowalności są wycofywane i
restartowane.
Fazie zapisu: Jeżeli faza walidacji zakończy się pomyślnie, modyfikacje transakcji są wprowadzane do bazy danych.
Więcej w wykładach 9 i 10.
[edytuj] Pytanie 56
odp.• v
Indeksy w bazach danych.
Indeks zdefiniowany na pliku jest dodatkową strukturą fizyczną, której celem jest przyspieszenie wykonywania operacji, które nie są wystarczająco efektywnie
wspierane przez podstawowe organizacje plików i struktury logiczne danych. Indeksy są zakładane na pojedynczych atrybutach lub zbiorach atrybutów relacji.
Atrybuty te noszą nazwę atrybutów indeksowych. Indeks jest uporządkowanym plikiem rekordów indeksu (ang. data entry) o stałej długości. Rekordy indeksu
zawierają dwa pola: klucz reprezentujący jedną z wartości występujących w atrybutach indeksowych relacji oraz wskaźnik do bloku danych zawierający krotkę,
której atrybut indeksowy równy jest kluczowi.
[edytuj] Rodzaje indeksów ze względu na charakterystykę atrybutu indeksowego
Indeks podstawowy (primary index) – założony na atrybucie porządkującym unikalnym. Indeks podstawowy jest indeksem rzadkim ponieważ nie
wszystkie rekordy pliku danych posiadają rekordy indeksowe. Rekord indeksowy indeksu podstawowego dla wartości X zawiera adres bloku danych, w
którym znajduje się rekord danych z wartością atrybutu indeksowego równą X.
Indeks zgrupowany (clustering index) – założony na atrybucie porządkującym nieunikalnym. Indeks zgrupowany jest również indeksem rzadkim
ponieważ nie wszystkie rekordy pliku danych posiadają rekordy indeksowe. Rekord indeksowy indeksu zgrupowanego dla wartości X zawiera adres bloku
danych, w którym znajduje się pierwszy rekord danych z wartością atrybutu indeksowego równą X. Taka organizacja pliku powoduje problemy z
wstawianiem i rekordów, ponieważ porządek rekordów po wstawieniu musi pozostać zachowany.
Indeks wtórny (secondary index) – założony na atrybucie nieporządkującym. Indeks wtórny jest również uporządkowany. Jest on zakładany na atrybucie
indeksowym pliku danych, który nie jest atrybutem porządkującym tego pliku. Każdy rekord pliku danych posiada swój odpowiednik w rekordzie
indeksu. Stąd, indeks wtórny jest indeksem gęstym. Rekord indeksu wtórnego składa się z dwóch pól: wartości pola indeksowego i wskaźnika albo do
rekordu albo do bloku danych zawierającego ten rekord.
[edytuj] Rodzaje indeksów ze względu na wskazanie do pliku danych
gęste (ang. dense) - posiada rekord indeksu dla każdego rekordu indeksowanego pliku danych
rzadkie (ang. sparse) - posiada rekordy tylko dla wybranych rekordów indeksowanego pliku danych.
[edytuj] Rodzaje indeksów ze względu na liczbę poziomów
Indeksy jednopoziomowe - jeden plik indeksu dla jednego pliku danych
Indeksy wielopoziomowe – indeks do indeksu
[edytuj] Podział indeksów ze względu na laboratoria ;)
ze względu na liczbę atrybutów indeksowych w kluczu: indeksy zwykłe i indeksy złożone
ze względu na unikalność wartości klucza: indeksy unikalne i indeksy nieunikalne
ze względu na kolejność wartości klucza: indeksy zwykłe i indeksy odwrócone
ze względu na sposób składowania: indeksy nieskompresowane i indeksy skompresowane
ze względu na zastosowania: indeksy funkcyjne i bitmapowe indeksy połączeniowe
[edytuj] Rodzaje indeksów ze względu na strukturę
indeksy bitmapowe - Jest on najlepszy w przypadku niskiej selektywności. Dla przykładu kolumna z wartościami 1 lub 0 nadaje się do założenia na niej
indeks bitmapowy. Informacje przechowywane w takim indeksie są w postaci mapy bitów dla każdej wartości występującej w danej kolumnie. Główną
zaletą takich indeksów jest to, że bardzo łatwo takie mapy bitów można łączyć. Przykładem takiego efektywnego wykorzystania indeksów jest sytuacja,
kiedy kilka wartości o malej selektywności może być połączonych w złączenie o wysokiej selektywności.
B-drzewa - Stosuje się strukturę podobna do odwróconego drzewa. Na samej górze tego drzewa znajduje się korzeń, poniżej są poziomy z gałęziami, a na
samym dole znajdują się liście zawierające informacje o położeniu rekordu bądź rekordów w tabeli.
Więcej w wykładzie 7
[edytuj] Pytanie 57
odp.• v
Porównanie różnych architektur sieci komputerowych.
Pytanie w sumie nie wiadomo o co dokładnie. Możliwe 3 warianty:
ze względu na topologie (wikipedia)
ze względu na podział warstowowy ISO/OSI i TCP/IP
ze względu na technologie dostępu do medium (Ethernet, TokenRing, FR, ATM)
[edytuj] Pytanie 58
odp.• v
Porównanie metod dostępu do łącza współdzielonego.
Najpopularniejsze:
CSMA, CSMA/CD, CSMA/CA, CSMA/CD jest stosowany w Ethernecie, gdzie czasy opóźnień rosną wykładniczo, a max liczba powtórzeń to 16.
Token Ring stosowany np. w FDDI (podwójny pierścień)
Prezentacja PPT nt. różnych metod dostępu: z Politechniki Wrocławskiej
[edytuj] Pytanie 59
odp.• v
Podział sieci na podsieci - motywacja, zasada i przykłady.
Ze względu na zmniejszającą się pulę dostępnych adresów podejmowane były różne kroki w celu rozwiązania tego problemu.
podział na podsieci o równych rozmiarach (rok 1985). Zakres adresów hostów w danej sieci był dzielony na mniejsze podsieci z mniejszą liczbą hostów,
w każdej z nowo utworzonych. Metoda ta wymagała „pożyczenia” bitów z części adresu przeznaczonej dla identyfikacji hosta dla zaadresowania podsieci.
tworzenie podsieci o zróżnicowanej długości masek adresów (ang. Variable Length Subnet Masks (VLSM)) - RFC 1009 (w 1987 roku). Przydzielona
danej organizacji pula adresów jest następnie dzielona wewnątrz niej na mniejsze porcje. Podział ten jest następnie niewidoczny z zewnątrz sieci danej
organizacji. Rozmiary podsieci mogą być różne. W ogólności polega na podziale podsieci na kolejne podsieci.
bezklasowy routing międzydomenowy - CIDR (ang. Classless Inter-Domain Routing).
CIDR stosowany jest wraz z VLMS. Sieci dzieli się ze względu na długość maski na tzw. bloki (nadsieć). Pozwala na skrócenie tablic routingu przez
wyróżnienie adresu nadsieci (agregacja adresów sieci) - informacje na temat masek sieci są przekazywane przez poszczególne routery w trakcie aktualizacji
tablic routingu.
Przykład:
Sieć 200.10.1.0/24 podzielić na podsieci stanowiące: 1/2, 1/16, 1/16, 1/8, 1/4.
sieć 200.10.1. 00000000 dzielimy na pół dla uzyskania 1/2 i 1/2
sieć 200.10.1. 0 0000000 przeznaczamy na 1/2
sieć 200.10.1. 1 0000000 dzielimy na pół dla uzyskania 1/4 i 1/4
sieć 200.10.1. 10 000000 dzielimy na pół dla uzyskania 1/8 i 1/8
sieć 200.10.1. 100 00000 dzielimy na pół dla uzyskania 1/16 i 1/16
sieć 200.10.1. 1000 0000 przeznaczamy na 1/16
sieć 200.10.1. 1001 0000 przeznaczamy na 1/16
sieć 200.10.1. 101 000000 przeznaczamy na 1/8
sieć 200.10.1. 11 000000 przeznaczamy na 1/4
Zatem otrzymujemy (w ostatnim bajcie wydzielony jest numer podsieci):
1. 1/2: adres sieci: 200.10.1. 0 0000000, maska 255.255.255.128 czyli 200.10.1.0/25; komputery (od 0 0000001 do 0 1111110) 200.10.1.1 - 200.10.1.126;
adres rozgłoszeniowy (0 1111111) 200.10.1.127
2. 1/16: sieć 200.10.1. 1000 0000, maska 255.255.255.240, czyli 200.10.1.128/28; komputery (od 1000 0001 do 1000 1110) 200.10.1.128 - 200.10.1.142;
adres rozgłoszeniowy (1000 1111) 200.10.1.143
3. 1/16: sieć 200.10.1. 1001 0000, maska 255.255.255.240, czyli 200.10.1.144/28; komputery (od 1001 0001 do 1001 1110) 200.10.1.145 - 200.10.1.158;
adres rozgłoszeniowy (1001 1111) 200.10.1.159
4. 1/8: sieć 200.10.1. 101 0000, maska 255.255.255.224, czyli 200.10.1.160/27; komputery (od 101 00001 do 101 11110) 200.10.1.161 - 200.10.1.190; adres
rozgłoszeniowy (101 11111) 200.10.1.191
5. 1/4: sieć 200.10.1. 11 000000, maska 255.255.255.192, czyli 200.10.1.192/26; komputery (od 11 000001 do 11 111110) 200.10.1.193 - 200.10.1.254;
adres rozgłoszeniowy (11 111111) 200.10.1.255
Więcej w materiale z laboratoriów i wykładach z ważniaka
[edytuj] Pytanie 60
odp.• v
Porównanie protokołów wyboru trasy.
Protokoły routingu (routujące, ang. Routing protocols) używane są do wymiany informacji o trasach pomiędzy sieciami komputerowymi, co pozwala na
dynamiczną budowę tablic routingu. Tradycyjne trasowanie jest bardzo proste, bo polega na wykorzystaniu tylko informacji o następnym " przeskoku" (ang.
hop). W tym przypadku router tylko kieruje pakiet do następnego routera, bez uwzględnienia na przykład zbyt wielkiego obciążenia czy awarii na dalszej części
trasy.
Mimo że dynamiczny routing jest bardzo skomplikowany, to właśnie dzięki niemu Internet jest tak elastyczny i rozwinął się o ponad 8 rzędów wielkości w ciągu
ostatnich 30 lat. Protokoły routingu robią dwie proste rzeczy:
mówią światu, kim są sąsiedzi
mówią sąsiadom, jak wygląda świat
Metryka routingu jest wartością używaną przez algorytmy routingu do określenia, która trasa jest lepsza. Brane są pod uwagę: szerokość pasma, opóźnienie,
liczba przeskoków, koszt ścieżki, obciążenie, MTU, niezawodność, koszt komunikacji. Tylko najlepsze trasy przechowywane są w tablicach routingu, podczas
gdy inne mogą być przechowywane w bazach danych. Jeśli router korzysta z mechanizmów równoważenia obciążenia (ang. load balancing) w tablicy routingu
może wystąpić kilka najlepszych tras. Router będzie je wykorzystywał równolegle, rozpraszając obciążenie równomiernie pomiędzy trasami.
Wewnętrzne protokoły routingu (zwane również protokołami bramy wewnętrznej - IGP, ang. Interior Gateway Protocol) - używane do wymiany informacji o
trasach w pojedynczym systemie autonomicznym.
Przykłady:
IGRP/EIGRP (Interior Gateway Routing Protocol/Enhanced IGRP)
OSPF (Open Shortest Path First)
RIP (Routing Information Protocol)
IS-IS (Intermediate System to Intermediate System)
Zewnętrzne protokoły routingu (zwane również protokołami bramy zewnętrznej - EGP, ang. Exterior Gateway Protocol) - używane do wymiany informacji o
trasach pomiędzy różnymi systemami autonomicznymi. Przykłady:
EGP (Exterior Gateway Protocol – obecnie przestarzały)
BGP (Border Gateway Protocol)
protokoły routingu wektora odległości - przekazują okresowe kopie tablic routingu do sąsiedniego routera, nie mają pełnej informacji o odległych routerach,
najlepsza ścieżka ustalana jest przez dodawanie do metryki routingu wartości. Przykłady:
RIP
IGRP
protokoły routingu stanu łącza – utrzymują złożone bazy danych z informacjami o topologii, mają pełną informację o odległych routerach, najlepsza ścieżka
jest obliczana przez każdy router. Przykłady:
OSPF
IS-IS/Integrated IS-IS
hybrydowe protokoły routingu - mają cechy zarówno protokołów wektora odległości jak i stanu łącza. Przykłady:
EIGRP
RIP (ang. Routing Information Protocol), czyli Protokół Informowania o Trasach oparty jest na zestawie algorytmów wektorowych, służących do obliczania
najlepszej trasy do celu. Używany jest w Internecie w sieciach korzystających z protokołu IP (zarówno wersji 4 jak i 6). Dzisiejszy otwarty standard protokołu
RIP, czasami nazywany IP RIP, jest opisany w dokumentach RFC 1058 i STD 56. Z powodu znacznego rozrostu sieci IETF rozpoczęło pracę nad protokołem
RIP 2.
Jest to protokół routingu działający na podstawie wektora odległości.
Do utworzenia metryki złożonej stosuje się jedynie liczbę przeskoków.
Aktualizacje routingu są rozgłaszane domyślnie co 30 sekund.
RIP wysyła informacje o trasach w stałych odstępach czasowych oraz po każdej zmianie topologii sieci.
Pomimo wieku, oraz istnienia bardziej zaawansowanych protokołów wymiany informacji o trasach, RIP jest ciągle w użyciu. Jest szeroko używany,
dobrze opisany i łatwy w konfiguracji.
Wadami protokołu RIP są wolny czas konwergencji (inaczej długi czas osiągania zbieżności), niemożliwość skalowania powyżej 15 skoków a także
wybór mało optymalnych ścieżek.
IGRP (ang. Interior Gateway Routing Protocol), czyli protokół routingu bramy wewnętrznej, jest jednym z protokołów sieciowych kontrolujących przepływ
pakietów wewnątrz tzw. Systemu autonomicznego (ang. AS – Autonomous System) - części sieci zarządzanej przez jedną organizację. Wymaga 16-bitowego
identyfikatora systemu autonomicznego przydzielonego przez ARIN
Działa na podstawie algorytmu wektora odległości.
Decyzje co do ścieżki, na którą skierować pakiet są podejmowane przez Router wykorzystujący IGRP na podstawie metryki złożonej wyliczonej z
szerokości pasma, obciążenia, opóźnienia i niezawodności.
Aktualizacje routingu są rozgłaszane po zmianie stanu sieci oraz domyślnie co 90s.
IGRP jest protokołem opracowanym przez jedną z największych firm sieciowych Cisco.
OSPF (ang. Open Shortest Path First), w wolnym tłumaczeniu: " otwórz/wybierz na początku najkrótszą ścieżkę" – jest to protokół routingu typu stanu łącza
(ang. Link State). Opisany jest w dokumentach RFC 2328. Jest zalecanym protokołem wśród protokołów niezależnych (np. RIP, ang. Routing Information
Protocol).
W przeciwieństwie do protokołu RIP, OSPF charakteryzuje się dobrą skalowalnością, wyborem optymalnych ścieżek i brakiem ograniczenia skoków
powyżej 15, przyspieszoną zbieżnością. Przeznaczony jest dla sieci posiadających do 50 routerów w obszarze.
Cechami protokołu OSPF są: routing wielościeżkowy, routing najmniejszym kosztem i równoważne obciążenia.
OSPF jest protokołem wewnętrznej bramy – IGP (ang. Interior Gateway Protocol).
Protokół OSPF używa hierarchicznej struktury sieci z podziałem na obszary z centralnie umieszczonym
obszarem zerowym (ang. area 0), który pośredniczy w wymianie tras między wszystkimi obszarami w domenie OSPF.
OSPF jest protokołem typu link-state jedynie wewnątrz obszaru. Oznacza to, że w ramach pojedynczego obszaru wszystkie routery znają całą jego
topologię i wymieniają się między sobą informacjami o stanie łącz, a każdy z nich przelicza trasy samodzielnie (algorytm Dijkstry). Między obszarami
OSPF działa jak protokół typu distance-vector, co oznacza, że routery brzegowe obszarów wymieniają się między sobą gotowymi trasami. Istnienie
obszaru zerowego umożliwia trasowanie pakietów pomiędzy obszarami bez powstawania pętli.
IS-IS (ang. Intermediate System to Intermediate System) jest protokołem routingu typu stanu łącza opartym na otwartych standardach. IS-IS jest protokołem
wewnętrznej bramy – IGP (ang. Interior Gateway Protocol).
Protokół opisany jest w dokumencie RFC 1142.
EIGRP – własnościowy protokół Cisco Systems typu balanced hybrid przeznaczony do routingu wewnątrz systemu autonomicznego (IGP). Jest to protokół
distance-vector z pewnymi cechami protokołów typu link-state, jak np. utrzymywanie relacji sąsiedzkich z przyległymi routerami (ang. adjacent routers) i
utrzymywanie tablicy topologii. Do przeliczania tras używa maszyny DUAL FSM (Diffused Update Algorithm Finite State Machine). Używany w sieciach o
wielkości nieprzekraczającej 50 routerów.
Używa płaskiej struktury sieci z podziałem na systemy autonomiczne. Do transportu pakietów wykorzystuje protokół RTP (Reliable Transport Protocol).
Używa złożonej metryki.
Od protokołów typu link-state odróżnia go fragmentaryczna wiedza o strukturze sieci (jedynie połączenia do sąsiadów), a co za tym idzie nie
wykorzystuje algorytmu Dijkstry Shortest Path First do
przeliczania tras.
Chętnie wykorzystywany ze względu na łatwą konfigurację, obsługę VLSM i krótki czas konwergencji.
Wymaga 16-bitowego identyfikatora systemu autonomicznego przydzielonego przez ARIN
BGP, ang. Border Gateway Protocol – protokół routingu typu path-vector działający między systemami autonomicznymi. Obecny otwarty standard protokołu
BGP jest opisany w dokumentach RFC 4271 i 1772.
Zadaniem BGP jest wymiana informacji między systemami autonomicznymi. BGP wyznacza ścieżki pozbawione pętli. Protokół ten nie używa metryk.
Do jego głównych zalet należy zapewnienie pełnej redundancji łączy.
Protokół BGP funkcjonuje w oparciu o protokół TCP na porcie 179. Relacje między sąsiadami BGP tworzone są dzięki protokołowi TCP, dlatego nie
wymagają istnienia bezpośredniego sąsiedztwa routerów (ang. adjacency).
EGP (ang. Exterior Gateway Protocol) – protokół routingu zewnętrznego służący do łączenia systemów autonomicznych.
Wymiana informacji odbywa się w trzech krokach:
neighbour acquisition - pozyskiwanie sąsiadów poprzez wymianę odpowiednich komunikatów
neighbour reachability' - sprawdzanie dostępności sąsiadów. Polega na wysłaniu odpowiedniego komunikatu i oczekiwaniu na odpowiedź. Jeśli brak
odpowiedzi po trzykrotnym wysłaniu komunikatu, dany sąsiad zostaje uznany za nieaktywny i wszystkie informacje dotyczące osiąganych przez
niego tras są usuwane z tablicy routingu.
network reachability - sprawdzenie osiągalności adresu wewnętrznej sieci autonomicznej. Okresowe przesyłanie danych o dostępnych adresach
wewnątrz sieci autonomicznej
Protokół EGP został zastąpiony protokołem BGP, który jest bardziej elastyczny i posiada więcej funkcji.
[edytuj] Pytanie 61
odp.• v
Podstawowe urządzenia sieciowe: karta sieciowa, modem, koncentrator, komutator i ruter.
Karta sieciowa, inaczej adapter sieci - urządzenie łączące komputer (przez szynę wejścia/wyjścia) z siecią (łączem fizycznym). Realizuje pięć podstawowych
funkcji:
1. koduje bity przeznaczone do wysłania, w taki sposób, aby urządzenie po drugiej stronie łącza prawidłowo interpretowało wysłane dane,
2. identyfikuje ramki - w ciągu bitów rozpoznaje komunikaty zbudowane w ustalony sposób (protokoły znakowe - zliczanie znaków lub z wyróżnionym
znakiem, protokoły bitowe - wyróżniona sekwencja, z wykorzystaniem zegara),
3. wykrywa błędy w transmisji ramek (CRC - cykliczna kontrola nadmiarowa, parzystość dwuwymiarowa, sumy kontrolne),
4. zapewnia niezawodność transmisji pomimo uszkodzeń łącza (odrzucanie błędnych ramek, potwierdzenie i czas oczekiwania wraz z automatycznym
powtarzaniem),
5. sterowanie dostępem do łącza - arbitraż dostępu do współdzielonego medium transmisji (CSMA/CD - Ethernet, pierścień ze znacznikiem - FDDI).
Modem (modulator-demodulator) urządzenie zamieniające dane cyfrowe przeznaczone do przesłania do sieci (łącza telefoniczne, kablowe itp.) na postać
analogową odpowiednią dla danego medium.
Koncentrator, inaczej hub - urządzenie pracujące w pierwszej warstwie modelu ISO/OSI, łączy wiele urządzeń sieciowych. Kieruje ruch z jednego portu na
wszystkie pozostałe porty bez analizowania nagłówków pakietów. Dodaje topologię gwiazdy do istniejącej sieci.
Komutator, inaczej przełącznik (ang. switch) – urządzenie łączące segmenty sieci komputerowej pracujące w drugiej warstwie modelu ISO/OSI (łącza danych),
jego podstawowym zadaniem jest przekazywanie ramek między segmentami. Stosuje się trzy podejścia wyboru portu wyjściowego:
1. datagramowe (bezpołączeniowe - w każdym pakiecie musi być pełen adres odbiorcy - pozwala na dotarcie pakietu; przełączniki muszą mieć tablice
kierujące datagramy na odpowiednie porty)
2. kanał wirtualny (połączeniowe - najpierw wysyłane żądanie i oczekiwanie na odpowiedź, przypisanie w komutatorach identyfikatora kanału, VCI, który
łączy port wejściowy z portem wyjściowym; konieczność pielęgnacji tablic, stare połączenie zrywane nawiązywane nowe w przypadku awarii)
3. wybór trasy przez nadawcę (numery portów na kolejnych przełącznikach umieszczane w nagłówku przez nadawcę - wymagana znajomość topologii sieci)
Ruter (ang. router) - urządzenie sieciowe pracujące w warstwie trzeciej modelu ISO/OSI. Urządzenie przechowuje tablice trasowania odpowiedzialne za
kierowanie ruchu pomiędzy łączone sieci komputerowe. Umożliwia przekazywanie ruchu między różnymi sieciami.
[edytuj] Pytanie 62
odp.• v
Techniki przesyłania danych w sieciach rozległych.
Asynchronous Transfer Mode (ATM) - wykorzystuje komutacje komórek (pakiety o stałej długości). Przed rozpoczęciem transmisji musi nastąpić
nawiązanie połączenia - znalezienie trasy, wykonywane jest jednorazowo przy zestawianiu kanału wirtualnego lub ścieżki wirtualnej. Zawiera warstwę
adaptacji AAL (potrzebna do fragmentacji i składania pakietów).
Frame Relay (FR) - usługa połączeniowa dla sieci z komutacją pakietów. Obejmuje 1 i 2 warstwę modelu ISO/OSI. Oferuje stałe kanały wirtualne (PVC)
oraz komutowane kanały wirtualne (SVC). Zawiera wsparcie do sterowania przeciążenia sieci (informacja o za szybkim wysyłaniu/odbieraniu).
Switched Multimegabit Data Service (SMDS), w Europie wersja Siemensa to Connectionless Broadband Data Service - szybka usługa bezpołączeniowa
(ATM dla sieci MAN), wykorzystuje protokół SIP (pracuje w warstwach 1-3).
[edytuj] Pytanie 63
odp.• v
Metody analizy składniowej.
Ważniak - metoda zstępująca
Ważniak - metoda wstępująca
[edytuj] Pytanie 64
odp.• v
Translacja sterowana składnią i analiza zależności kontekstowych.
Ważniak - translacja sterowana składnią (początkowe slajdy)
Ważniak - analiza zależności kontekstowych
[edytuj] Pytanie 65
odp.• v
Środowisko przetwarzania i generacja kodu wynikowego.
Ważniak - synteza kodu i środowisko czasu wykonania
[edytuj] Pytanie 66
Metody reprezentacji wiedzy i ich zastosowanie na przykładzie różnych dziedzin sztucznej inteligencji. (Hasło do wykładów J. Józefowskiej: w2005)
Wykład pod tytułem Reprezentacja wiedzy
odp.• v
Automatyczne wnioskowanie
reprezentacja wiedzy: rachunek predykatów [1]
wnioskowanie: dedukcja, rezolucja
zastosowanie:
projektowanie obwodów elektronicznych
weryfikacja programów komputerowych
sterowanie złożonymi systemami
Gry
reprezentacja wiedzy: przestrzeń ruchów [2]
wnioskowanie: przeszukiwanie grafu
zastosowanie:
formalna struktura programu
mała ilość wiedzy do rozwiązania problemów
duża przestrzeń stanów
Systemy eksperckie
reprezentacja wiedzy: reguły produkcji [3]
wnioskowanie: "rozpoznaj-wykonaj"
zastosowanie:
rolnictwo, chemia, systemy komputerowe, elektronika, zarządzanie informacją, wytwarzanie, matematyka, meteorologia, wojskowość, fizyka,
sterowanie procesami, technologie kosmiczne
Przetwarzanie języka naturalnego
reprezentacja wiedzy: strukturalna
wnioskowanie: wyszukiwanie struktury
zastosowanie:
komputery 5-tej generacji
robotyka
medycyna
dydaktyka
Rozpoznawanie obrazów
reprezentacja wiedzy: wektorowa, rastrowa
wnioskowanie: poszukiwanie
zastosowanie:
robotyka
zautomatyzowana produkcja
medycyna
kryminalistyka
Planowanie działań i robotyka
reprezentacja wiedzy: rachunek predykatów
wnioskowanie: przeszukiwanie
zastosowanie:
robotyka
systemy produkcyjne
gry decyzyjne
nauki decyzyjne
Automatyczne uczenie się
reprezentacja wiedzy: drzewa decyzyjne
wnioskowanie: algorytm ID3 Quinlana
zastosowanie:
wszelkie systemy oparte na wiedzy
eksploracja danych
nauki decyzyjne
[edytuj] Pytanie 67
odp.• v
Przeszukiwanie przestrzeni stanów jako ogólny model procesu wnioskowania.
Przeszukiwanie jest najbardziej ogólną techniką rozwiązywania problemów. Polega na eksporacji wszyskich kolejnych i alternatywnych kroków.
Przestrzeń stanów jest to czwórka uporządkowana [N, A, S, GD], gdzie:
N jest zbiorem wierzchołków odpowiadających stanom w procesie rozwiązywania problemu
A jest zbiorem krawędzi, odpowiadających krokom w procesie rozwiązywania problemu
S jest niepustym podzbiorem N, zawierającym stany początkowe problemu
GD jest niepustym podzbiorem N, zawierającym stany docelowe problemu
Stany w GD są opisane:
przez podanie własności stanów występujących w przeszukiwaniu
przez podanie własności ścieżki tworzonej podczas przeszukiwania
Ścieżką rozwiązania nazywamy ścieżkę wiodącą przez ten graf z wierzchołka z S do wierzchołka w GD.
Zadaniem algorytmów przeszukiwania jest znalezienie ścieżki rozwiązania w przestrzeni problemu. Można przeszukiwać
implementacja algorytmincza (implementacja przeszukiwania: rekurencja):
wszerz
wgłąb
kierunek:
w przód stosujemy gdy:
wszystkie lub większość danych jest zawartych w sformułowaniu problemu (np. interpretacja).
występuje duża liczba potencjalnych celów, ale jest tylko kilka możliwości zastosowania faktów i informacji wejściowych do konkretnej
instancji problemu
trudno jest sformułować hipotezę docelową
w tył stosujemy gdy:
cel lub hipoteza jest sfromuowana np. w dowodzeniu twierdzeń matematycznych
liczba reguł możliwych do zastosowania rośnie szybko, a wczesna eliminacja celów może wyeliminować przeszukiwanie pewnych gałęzi.
stan początkowy nie jest dany, ale musi być rozpoznany np. diagnostyka medyczna
Podsumowanie
Przeszukiwanie przestrzeni stanów jest ogólnym modelem rozwiązywania problemów
Algorytmy dokładne przeszukiwania są zwykle zbyt pracochłonne
Z przeszukaniem przestrzeni zdarzeń wiąże się pojęcie algorytmy heurystycznych - wymagają one dostosowania do charakterystyki rozwiązywanego
problemu
Można zdefiniować ogólne własności heurystyk: dopuszczalność, monotoniczność i poinformowanie
Więcej wykład "Wnioskowanie jako przeszukiwanie przestrzeni stanów" [4]
[edytuj] Pytanie 68
odp.• v
Szacowanie rozmiaru oprogramowania i pracochłonności.
http://www.cs.put.poznan.pl/jnawrocki/io/0506/lecture/Slajdy4-rozmiar.ppt
[edytuj] Pytanie 69
odp.• v
Zarządzanie przedsięwzięciami programistycznymi metodą PRINCE2.
wikipediapl:PRINCE2
http://www.cs.put.poznan.pl/jnawrocki/io/0506/lecture/Slajdy8-prince.ppt
[edytuj] Pytanie 70
odp.• v
Zwinne metodyki programowania i XP.
wikipediapl:Programowanie ekstremalne
http://www.cs.put.poznan.pl/jnawrocki/io/0506/lecture/SlajdyE-agile.ppt
[edytuj] Pytanie 71
odp.• v
Narzędzia symulacji procesów.
[edytuj] Pytanie 72
odp.• v
Inteligentne urządzenia pomiarowe (inteligentne sensory).
Współczesne systemy sterowania, wymagają pomiarowych układów wejściowych, dostarczających znormalizowanych sygnałów elektrycznych analogowych
lub cyfrowych. Oznacza to konieczność przetworzenia wielkości mierzonej na akceptowalną postać wielkości wyjściowej, a to z reguły wymaga przynajmniej
jednego, dodatkowego stopnia przetwarzania sygnału. Klasycznie, rozdzielamy ten istotny fragment toru pomiarowego na dwa podstawowe bloki: czujnik,
realizujący wstępny etap przetwarzania wielkości mierzonej na inną, łatwą do dalszego przetwarzania wielkość (najczęściej elektryczną – zmiana rezystancji,
pojemności, indukcyjności, napięcia) oraz blok normalizacji sygnału, który zawiera dalsze etapy przetwarzania, obejmujące wzmocnienie sygnału, często też
przetwarzanie a/c, a coraz częściej obróbkę programową sygnału w układzie mikrokontrolera (np. złożone algorytmy filtracji, linearyzacji i kompensacji
zakłóceń). We współczesnych rozwiązaniach przetworników coraz częściej następuje integracja wskazanych bloków do postaci jednego elementu. Pojęcie
sensora często jest rozszerzane również na takie wykonania.
Więcej w wykładzie z ważniaka
[edytuj] Pytanie 73
odp.• v
Komputer jako urządzenie sterujące procesem.
Funkcje realizowane przez KSS obejmują zarówno te, które realizowane są przez klasyczne układy sterowania jak również inne dodatkowe stanowiące
specyfikę KSS. I tak to co stanowi specyfikę KSS obejmuje:
zbieranie wartości zmiennych procesowych,
analizę i dokumentacje przebiegu procesu,
realizacje łączności: operator – proces,
testowanie poprawności funkcjonowania własnych układów.
Natomiast funkcje:
przetwarzanie zmiennych procesowych na decyzje,
wypracowanie decyzji i oddziaływanie na proces,
stanowią zakres klasycznie realizowanych zadań przez każdy system sterowania.
Więcej w wykładzie 3
[edytuj] Pytanie 74
odp.• v
Programowalne sterowniki logiczne.
Sterownik PLC od strony rozwiązań układowych niewiele różni się od innych sterowników. Do charakterystycznych różnic natomiast należą:
architektura z punktu widzenia programisty,
działanie sterownika,
języki programowania,
Pierwsza cecha tkwi w oprogramowaniu, które powoduje, że programista użytkownik ma do swojej dyspozycji wyłącznie pewne układy funkcjonalne. Należą
do nich:
Układy wejściowe,
Układy wyjściowe,
Markery,
Liczniki,
Timery,
Rejestry.
Natomiast zupełnie zbędna jest znajomość rzeczywistej architektury sterownika. Z punktu widzenia użytkownika nie ma znaczenia np. typ procesora, jego lista
rozkazów, adresy pamięci, układów we/wy itp. Program użytkownika na bieżąco tłumaczony jest przy pomocy Interpretera rozkazów.
Drugą cechą współczesnych sterowników programowalnych jest ogólnie przyjęty model ich działania. Po starcie i inicjalizacji sterownik przechodzi do
podstawowego cyklu pracy. Cykl (skan) rozpoczyna się od równoległego odczytu wejść. Obraz stanu wejść zapamiętany zostaje w pamięci wewnętrznej
sterownika. Instrukcje programu wykonywane są w naturalnej kolejności aż do instrukcji kończącej program – END. Jeżeli w trakcie wykonywania programu
potrzebna jest informacja o stanie wejść to pobierana jest z pamięci obrazu. Podobnie aktualny stan wyjść zapisywany jest do pamięci wewnętrznej. Po instrukcji
END sterownik przechodzi do kolejnej fazy cyklu – stan wyjść z pamięci wewnętrznej zostaje przepisany do bufora wyjść fizycznych i jest podtrzymany przez
kolejny cykl pracy sterownika. Kolejna faza zamykająca pojedynczy cykl sterownika przeznaczona jest dla wewnętrznych operacji diagnostycznych oraz dla
potrzeb komunikacji z urządzeniami zewnętrznymi (w tym z programatorem).
Trzecia cechą wyróżniającą sterowniki PLC są języki programowania zgodne z zaleceniami normy IEC 1131 rozdz. 3 (IEC 61131-3). Ogólnie można je
podzielić na graficzne i tekstowe. Do najczęściej stosowanych języków należą Schemat drabinkowy LD (ang. Ladder Diagram) oraz Lista instrukcji IL (ang.
Instruction List).
Więcej na wykładzie 7
[edytuj] PLC vs Mikrokontrolery
The main difference from other computers is that PLCs are armored for severe condition (dust, moisture, heat, cold, etc) and have the facility for extensive
input/output (I/O) arrangements. These connect the PLC to sensors and actuators. PLCs read limit switches, analog process variables (such as temperature and
pressure), and the positions of complex positioning systems. Some even use machine vision. On the actuator side, PLCs operate electric motors, pneumatic or
hydraulic cylinders, magnetic relays or solenoids, or analog outputs. The input/output arrangements may be built into a simple PLC, or the PLC may have
external I/O modules attached to a computer network that plugs into the PLC. Many of the earliest PLCs expressed all decision making logic in simple ladder
logic which appeared similar to electrical schematic diagrams. The electricians were quite able to trace out circuit problems with schematic diagrams using
ladder logic. This program notation was chosen to reduce training demands for the existing technicians. Other early PLCs used a form of instruction list
programming, based on a stack-based logic solver.
Więcej o PLC na Wikipedii
[edytuj] Pytanie 75
odp.• v
Podstawowe miary położenia i rozproszenia stosowane w statystycznej analizie danych.
Ophelia - Statystyka i Analiza Danych - Statystyka Opisowa
miary położenia - slajdy 3-9
miary rozproszenia - slajdy 15-19
[edytuj] Pytanie 76
odp.• v
Zasady weryfikacji hipotez statystycznych na przykładzie testu parametrycznego dla wartości średnich.
[edytuj] Pytanie 77
odp.• v
Analiza zależności zmiennych ilościowych.
[edytuj] Pytanie 78
odp.• v
Klasyfikacja architektur systemów równoległych.
[edytuj] Pytanie 79
odp.• v
Metoda projektowania algorytmów równoległych.
[edytuj] Pytanie 80
odp.• v
Metody oceny efektywności, komunikacji i zarządzania wykonaniem dla aplikacji równoległych.
[edytuj] Pytanie 81
odp.• v
Linearyzacja problemów programowania ilorazowego, ‘max-min’ i celowego.
Programowanie ilorazowe
Ax = b
zamieniamy na:
(max)z = cTy + c0y0
Ay − by0 = 0
dTy + d0y0 = 1
Po rozwiązaniu wynik przekształcamy wg wzoru:
Programowanie min-max:
Ax = b
zamieniamy na:
(min)z = x0
(k = 1,2,...,r)
Ax = b
Programowanie celowe: https://ophelia.cs.put.poznan.pl/webdav/wd/students/zajeciaIII-IV/pc.pdf
[edytuj] Pytanie 82
odp.• v
Typy modeli preferencji – definicje i przykłady metod wspomagania decyzji, które je wykorzystują.
1. Funkcyjne - np. addytywna funkcja użyteczności (ASSES, UTA)
2. Relacyjne - relacja przewyższania lub relacja rozmyta (Electre Is, Electre Tri)
3. Zbiory reguł decyzyjnych (CRSA)
[edytuj] Pytanie 83
odp.• v
Konstrukcja relacji przewyższania w trybie testów zgodności i niezgodności.
Relacja przewyższania (outranking relation) aSb oznacza że akcja a jest co najmniej tak dobra jak b.
W metodzie Electre Is relację przewyższania konstruuje się przeprowadzając dwa testy:
1. Test zgodności (concordance test) polegaja na sprawdzeniu czy współczynnik
(gdzie ki to waga kryterium a Ci(a,b) to preferencja na i-tym kryterium) jest większe od wartości odcięcia λ.
2. Test niezgodności (discordance test) polega na sprawdzeniu czy wartości na dowolnym kryterium nie są większe (gorsze) niż ustalona na tym kryterium
wartośc veto.
[edytuj] Pytanie 84
odp.• v
Indukcja reguł decyzyjnych z przybliżeń klas decyzyjnych (podejście zbiorów przybliżonych).
Ogólnie:
metoda odkrywania wzorców w danych (np. zależności między symptomami a diagnozą)
wzorce są nietrywialne i pozwalają na predykcję przyszłych stanów
korzysta ze zbiorów przybliżonych, które dobrze radzą sobei z wiedzą niespójną
wyindukowane reguły mogą być pewne lub przybliżone (np. przypisywać do klasy a lub b)
Szczegółowo:
algorytm działa w oparciu o dolne i górne przybliżenia klas (lower and upper class aproximation):
dolne przybliżenie to wszystkei te obiekty, które na pewno należą do klasy (wszystkie inne obiekty o takiej samej kombinacji atrybutów też należą
do tej klasy)
górne przybliżenie to wszystkie te obiekty, które możliwe, że należą do klasy (wszystkei obiekty przypisane do klasy + te które mają takie same
kombinacje atrybutów ale są przypisane do innych klas)
jakość aproksymacji wyznacza współczynnik będący ilorazem liczności sumy teoriomnogościowej dolnych przybliżeń wszystkich klas oraz liczby
wszystkich obiektów
zbiór graniczny to górne przybliżenie pomniejszone o dolne przybliżenie
reguły dzielimy na:
pewne (ceratain - wspierane przez dolne przybliżenia)
możliwe (possible - wspierane przez górne przybliżenie)
przybliżone (approximate - wspierane przez zbiór graniczny)
do indukowania reguł służy algorytm LEM2, który tworzy minimalne pokrycie zadanego zbioru obiektów regułami decyzyjnymi
wikipedia:Dominance-based Rough Set Approach
[edytuj] Pytanie 85
odp.• v
Porównanie modeli barw RGB i HSV a teoria percepcji barw.
wazniak:GKIW Moduł 2 - Światło i barwa w grafice komputerowej
[edytuj] Pytanie 86
odp.• v
Metodologia rozpoznawania mowy w oparciu o ukryte modele Markowa.
Grafika:Inz 86 - Rozpoznawanie mowy.pdf
[edytuj] Pytanie 87
odp.• v
Podstawowe przekształcenia morfologiczne obrazu.
http://ics.p.lodz.pl/~adamwoj/WSFI/PO/7_Wyklad_PO.pdf
[edytuj] Pytanie 88
odp.• v
Zasada kompresji dźwięku typu MP3 a psychofizjologia słyszenia.
MP3, czyli MPEG 1 Layer III to format stratnej kompresji dźwięku, wykorzystujący między innymi psychoakustyczny model słuchu. Opiera się na założeniu, że
ze względu na właściwości ucha i mózgu człowieka, nie jesteśmy w stanie odebrać i przetworzyć całej informacji akustycznej niesionej przez dźwięk. Nadmiar
informacji jest bardzo duży, ponieważ około 95% informacji zawartej w złożonym sygnale akustycznym nie dociera do ludzkiej świadomości. Co prawda sygnał
wyjściowy nie odpowiada po kompresji oryginałowi, ale ucho ludzkie tego nie rozróżnia.
Aspekty brane pod uwagę przy kompresji MP3:
1. Zróżnicowana wrażliwość układu słuchowego na tony o różnych częstotliwościach
Teoretycznie słyszymy dźwięki z zakresu od 20 Hz do 20 kHz, więc płyta CD oferuje nam pełną skalę doznań. W rzeczywistości większość ludzi jest
jednak głucha na wszystko powyżej 16-17 kHz. Ponadto ucho najlepiej reaguje na pasmo od 2 do 4 kHz (mowa mieści się w zakresie tzw. pasma
telefonicznego – od 0,5 do 2 kHz).
2. Maskowanie częstotliwościowe (jednoczesne)
Gdy słyszymy dźwięk o wysokim natężeniu, blokuje on percepcję fal o podobnej częstotliwości, lecz mniejszym natężeniu. Dźwięki muszą być wówczas
znacznie głośniejsze niż to wynika z normalnej charakterystyki ucha, abyśmy mogli je wychwycić. Mocny dźwięk zwie się maskującym, słabszy zaś –
maskowanym.
3. Maskowanie czasowe
Zjawisko maskowania może pojawiać się także w funkcji czasu (głośny dźwięk ogranicza percepcję innych dźwięków w następnych sekundach).
[edytuj] Pytanie 89
odp.• v
Architektury aplikacji intra- i internetowych (WWW, HTTP, HTTPS, WAP).
http://www.cs.put.poznan.pl/mzakrzewicz/aiir_czesc1.pdf
[edytuj] Pytanie 90
odp.• v
Technologie prezentacji danych w sieci Internet (HTML, CSS, XML, XSL, VRML, WML, JavaScript).
http://www.cs.put.poznan.pl/mzakrzewicz/aiir_czesc1.pdf
[edytuj] Pytanie 91
odp.• v
Charakterystyka systemów przetwarzania rozproszonego.
Środowisko rozproszone to zbiór niezależnych komputerów postrzegany przez jego użytkowników jako pojedynczy, spójny system (A. Tanenbaum). W
systemach rozproszonych wyróżnia się węzły (procesor, lokalna pamięć operacyjna i interfejs komunikacyjny) połączone za pomocą łącz (jedno i
dwukierunkowych, buforowanych lub nie, FIFO i nonFIFO). Węzły komunikują się między sobą jedynie za pośrednictwem komunikatów (wiadomości)
przesyłanych po łączach.
Grid obliczeniowy to oprogramowanie i sprzęt gwarantujące dostęp do dużej mocy obliczeniowej. Dostęp ten jest usługą:
wiarygodną (ang. dependable) - użytkownicy żądają pewności, że otrzymają przewidywalny, nieprzerwany poziom wydajności dzięki różnym elementom
tworzącym GRID,
spójną (ang. consistent) - potrzebny jest standardowy serwis, dostępny poprzez standardowe interfejsy, pracujący ze standardowymi parametrami,
powszechnie dostępną (wszechobecną) (ang. pervasive) - usługa zawsze powinna być dostępna, niezależnie od tego gdzie znajduje się użytkownik tej
usługi,
relatywnie tanią (opłacalną) (ang. inexpensive) - dostęp do usługi powinien być relatywnie tani, tak by korzystanie z takiej usługi było atrakcyjne także z
ekonomicznego punktu widzenia.
[edytuj] Pytanie 92
odp.• v
Problem konstrukcji spójnego obrazu stanu globalnego i przykładowe algorytmy jego rozwiązania.
Stan globalny procesu rozproszonego π to uporządkowany zbiór stanów lokalnych procesów składowych P1, P2, ..., Pn w chwili t. Oznaczany przez
.
Wyróżnia się dwa modele stanów globalnych:
określany przez trójkę: present(t) - (nie)posiadanie znacznika, outLog(t) - wiadomości wysłany do chwili t, inLog(t) - wiadomości odebrane do chwili t,
złożenie stanów lokalnych procesów Si i stanów kanałów (Lij - zbiór wiadomości w kanale).
Przykładowe algorytmy rozwiązania to:
Algorytm Chandy-Lamporta (kanały muszą być FIFO; zapisuje stan - 1. pakiet zapisu; stan kanału - to, co otrzymane kanałem od zapisania stanu do
otrzymania znacznika danym kanałem; rozsyłanie pakietu zapisu do wszystkich incydentnych procesów; koniec - otrzymanie stanów od wszystkich;)
Algorytm Matterna (oparty o zegary wektorowe)
Algorytm Lai-Yang (nie wymaga kanałów FIFO; koloruje procesy i wiadomości; stan opisany przez stan procesu, wysłane wiadomości i odebrane
wiadomości; czerwony zapamiętany)
Algorytm z kolorowaniem procesów i wiadomości (czerwony zapamiętany, biały nie; białe pakiety odebrane przez czerwony proces - stan kanału)
Algorytmy dla kanałów FC
Opis algorytmów w wykładzie 8.
[edytuj] Pytanie 93
odp.• v
Problem detekcji zakończenia i przykładowe algorytmy jego rozwiązania.
Nieformalnie problem detekcji zakończenia przetwarzania rozproszonego polega na sprawdzeniu, czy wszystkie procesy przetwarzania są w stanie pasywnym
oraz czy żadna wiadomość będąca w kanale (transmitowana lub dostępna) nie uaktywni któregokolwiek z tych procesów
Oznaczenia dla definicji formalnych:
passivei – zmienna logiczna (predykat) przyjmująca wartość True wtedy i tylko wtedy, gdy proces Pi jest pasywny
availablei – tablica [1..n] zmiennych logicznych procesu Pi skojarzona z wiadomościami dostępnymi
availablei [j] – j-ty element tablicy availablei przyjmujący wartość True, gdy dla Pi jest dostępna wiadomość wysłana przez Pj
in-transiti tablica [1..n] zmiennych logicznych procesu Pi skojarzona z wiadomościami transmitowanymi
in-transiti[j] j-ty element tablicy in-transiti przyjmujący wartość True, gdy wiadomość wysłana przez Pj do Pi należy do LTj,i, a więc jest transmitowana i
nie jest jeszcze dostępna
AVi = {Pj : availablei[j] = True}
ITi = {Pj : in-transiti[j] = True}
Zakończenie dynamiczne
Nieformalnie, przetwarzanie rozproszone jest w stanie zakończenia dynamicznego, jeżeli żaden proces składowy przetwarzania rozproszonego nie będzie już
nigdy uaktywniony. Stan ten będzie utrzymywany pomimo, że pewne wiadomości są wciąż transmitowane, a pewne wiadomości są już dostępne.
Formalnie predykat:
Zakończenie statyczne
wszystkie procesy są pasywne
wszystkie wiadomości znajdujące się w kanałach są dostępne
dla żadnego procesu nie jest spełniony warunek uaktywnienia
Formalnie predykat:
Klasyczna definicja zakończenia
wszystkie procesy pasywne
brak wiadomości przesyłanych
żadna wiadomość nie jest dostępna
Algorytmy:
Dijkstra, Feijen, van Gasteren (kolorowanie tokena; po wysłaniu tokena - proces biały; token przesyłany, gdy proces pasywny; zmiana koloru tokena jeżeli
proces jest czarny;proces czarny - gdy prześle wiadomość do procesu o numerze większym; koniec odebranie białego tokena) - model przetwarzania
synchronicznego, czas transmisji się zaniedbuje
Dijkststry-Scholtena dla przetwarzania dyfuzyjnego
Misry (kolorowane tokena jak w pierwszym; zliczanie ilości przesłań nie-czarnego tokena; wiele monitorów może wykrywać zakończenie) - brak założeń
o topologi przetwarzania, kanały FIFO, niezawodna komunikacja
z licznikami wiadomości (sc i rc) - atomowy model przetwarzania, sprowadza się do sprawdzenia stanu kanałów; algorytm dwufazowy
wektorowy algorytm detekcji zakończenia (monitory tworzą strukturę o topologii pierścienia)
algorytm detekcji zakończenia statycznego (monitory połączone w topologię gwiazdy)
algorytm detekcji zakończenia dynamicznego (wykorzystuje cykle detekcyjne, oraz wiadomości kontrolne QUERY i REPLY; liczniki wiadomości
wysłanych i odebranych, powiązane z poszczególnymi procesami; wykonywany przez monitory)
algorytmy konstruowania spójnego obrazu stanu globalnego, detekcja zakończenia jeżeli obraz stanu globalnego stworzony przez algorytm spełnia
warunki zakończenia
Więcej szczegółów w wykładach 9 i 10 na ważniaku.
[edytuj] Pytanie 94
Cechy charakterystyczne mechanizmu szyfrowania symetrycznego oraz szyfrowania asymetrycznego, sposoby wykorzystania dla zapewnienia poufności,
integralności i niezaprzeczalności komunikacji.
odp.• v
wazniak:Bezpieczeństwo systemów komputerowych - wykład 4:Podstawowe elementy kryptografii
[edytuj] Pytanie 95
odp.• v
Problem przepełnienia bufora – źródło problemu, zagrożenia i metody ochrony.
http://ul.ii.uj.edu.pl/index.php?option=com_docman&task=doc_view&gid=36&Itemid=34
[edytuj] Pytanie 96
odp.• v
Ataki odmowy dostępu do usług (Denial of Service) – przykład ataku i sposoby jego unikania.
wazniak:Bezpieczeństwo systemów komputerowych - wykład 6:#Atak Denial of Service (DoS)
Źródło: „http://putwiki.informatyka.org/wiki/Pytania_na_egzamin_in%C5%BCynierski_%28Informatyka%29”
Kategorie: Informatyka | Informatyka semestr 7
Widoki
Strona
dyskusja
edytuj
historia i autorzy
Language
osobiste
Logowanie i rejestracja
nawigacja
Strona główna
Kierunki
Przedmioty
Zadania do rozwiązania
Do zrobienia
Ostatnie zmiany
Pomoc
Szukaj
Przejdź
Szukaj
narzędzia
Linkujące
Zmiany w dolinkowanych
Prześlij plik
Strony specjalne
Wersja do druku
Link do tej wersji
Wersja PDF
Tę stronę ostatnio zmodyfikowano 15:53, 16 lut 2009.
Tę stronę obejrzano 7 550 razy.
Zasady ochrony prywatności
O PUTWiki
Informacje prawne
http://putwiki.informatyka.org/wiki/Pytania_na_egzamin_in%C5%BCynierski_(Informatyka)
Go
CZE
STY
2008
2010
7
14 captures
30 kwi 07 - 7 sty 10
LUT
2011
Close
Help