Wstep do informatyki - Notatki - Informatyka - Część 2, Notatki'z Informatyka. Opole University
Kowal_86
Kowal_868 marca 2013

Wstep do informatyki - Notatki - Informatyka - Część 2, Notatki'z Informatyka. Opole University

PDF (293 KB)
7 strona
520Liczba odwiedzin
Opis
Notatki dotyczące tematów z dziedziny informatyki: wstep do informatyki; pytania i odpowiedzi.
20punkty
Punkty pobierania niezbędne do pobrania
tego dokumentu
Pobierz dokument
Podgląd3 strony / 7
To jest jedynie podgląd.
3 shown on 7 pages
Pobierz dokument
To jest jedynie podgląd.
3 shown on 7 pages
Pobierz dokument
To jest jedynie podgląd.
3 shown on 7 pages
Pobierz dokument
To jest jedynie podgląd.
3 shown on 7 pages
Pobierz dokument

Wynikają ze złego zaprojektowania algorytmu:

np.:

- na etapie projektowania algorytmu źle zaadresowano w grafie połączenia iteracji lub

wyborów warunkowych.

Konsekwencje:

- algorytm dla pewnych dopuszczalnych danych daje niepoprawne rozwiązanie

- wykonanie programu zostaje przerwane

- program realizujący algorytm nie kończy swego działania

30. Jaka jest różnica pomiędzy całkowitą, a częściową poprawnością algorytmu?

Algorytm jest całkowicie poprawny względem warunku początkowego i końcowego,

jeżeli dla każdych danych spełniających warunek początkowy, obliczenia kończą się i

wyniki spełniają warunek końcowy.

Algorytm jest częściowo poprawny jeśli dla każdych obliczeń, które się kończą wynik

jest poprawny względem warunku początkowego i końcowego.

Różnica polega na tym, ze w przypadku poprawności częściowej nie zawsze obliczenia

prowadzą do zakończenia pracy algorytmu.

Weryfikując częściową poprawność algorytmu musimy wykazać, że obliczenia kończą

się dla wszystkich poprawnych danych wejściowych.

31. Co nazywamy niezmiennikiem a co zbieżnikiem?

Niezmienników używa się w obrębie iteracji do sprawdzenia częściowej poprawności

algorytmu. (Metoda niezmienników polega na ustawieniu w danym algorytmie

punktów kontrolnych, tzw. asercji. Jeśli za każdym razem, dla różnego rodzaju

danych wejściowych algorytm osiągnie dany punkt kontrolny to znaczy, że jest

częściowo poprawny. Metodę tę dlatego nazwano metodą niezmienników, gdyż

zgodnie z jej schematem działania, bez względu na wprowadzone dane wejściowe, dla

poprawnego algorytmu przebieg przez punkty kontrolne powinien być niezmienny.)

Zbieżników używa się do ustalania całkowitej poprawności algorytmów. (Metoda

zbieżników polega na ustaleniu w danym algorytmie zbieżników – zmiennych, które

będą przyjmowały różne wartości, ale zawsze, bez względu na wprowadzone dane,

będą dążyły do pewnej wartości maksymalnej lub minimalnej i nigdy jej nie

przekroczą. Np.: zbieżnikiem w algorytmie sortowania może być zmienna, której

przypiszemy, wartość równą wartości elementów do posortowania.)

32. Jak określona jest złożoność algorytmów? Jakie znasz jej rodzaje?

Złożoność algorytmów możemy badać pod kontem:

- pamięci

- czasu

Złożoność pamięciowa to zależność pomiędzy ilością potrzebnej do działania

algorytmu pamięci (wielkością i liczbą struktur danych), a rozmiarami danych

wejściowych wprowadzanych do algorytmu.

Złożoność czasowa to zależność pomiędzy liczbą elementarnych operacji

wykonywanych w trakcie przebiegu algorytmu a wielkością danych wejściowych.

Algorytmy zazwyczaj bada się pod kontem złożoności czasowej, gdyż ta przeważa o

użyteczności algorytmu.

33. Jak formalnie stwierdzamy, że dwa algorytmy mają tą samą złożoność?

Dwa algorytmy o czasach wykonania F1(N) i F2(N) mają złożoność tego samego

rzędu, jeśli:

docsity.com

 

  C

N

N

F F

Lim N

  2

1

Jeśli C = 0 algorytm o czasie wykonania F1(N) ma niższy rząd złożoności.

Jeśli C =  algorytm o czasie wykonania F2(N) ma niższy rząd złożoności.

Jeśli 0<C< złożoność czasowa jest tego samego rzędu.

34. Podaj definicję złożoności logarytmicznej algorytmu.

Oznaczenie złożoności logarytmicznej: O(logN).

Algorytm o czasie wykonania F(N) ma złożoność logarytmiczną jeżeli: lim F(N)/N0.

35. Podaj definicję złożoności liniowej algorytmu.

Oznaczenie złożoności liniowej: F(N)=O(N).

Algorytm o czasie wykonania F(N) ma złożoność liniową jeżeli: lim F(N)/N=C, gdzie

0<C<.

36. Podaj definicję złożoności kwadratowej algorytmu.

Oznaczenie złożoności kwadratowej: F(N)=O(N2).

Algorytm o czasie wykonania F(N) ma złożoność kwadratową jeżeli: lim F(N)/N2=C,

gdzie 0<C<.

37. Podaj definicję złożoności wykładniczej algorytmu.

Oznaczenie złożoności wykładniczej: F(N)=O(2N).

Algorytm o czasie wykonania F(N) ma złożoność wykładniczą jeżeli: lim F(N)/2 N=C,

gdzie 0<C<.

38. Co oznacza zapis F(N)=O(g(N)) w odniesieniu do funkcji F(N).

Zapis F(N)=O(g(N)) oznacza spełnienie warunku lim F(N)/g(N)=C, gdzie 0<C< i

można odczytywać: algorytm ma złożoność rzędu g(N), lub czas wykonania

algorytmu jest O(g(N)).

Równość w zapisie F(N)=O(g(N)) powinna być rozumiana w ten sposób, że funkcja

F(N) jest jedną z funkcji, które spełniają powyższy warunek lub precyzyjniej, że

należy do zbioru wszystkich funkcji spełniających powyższy warunek.

39. Opisz schemat działania algorytmu wyszukiwania binarnego z listy

uporządkowanej. Jaką ten algorytm ma złożoność?

Działanie algorytmu wyszukiwania binarnego z listy uporządkowanej rozpoczyna się

od porównania ze wzorcem poszukiwanego elementu, elementu znajdującego się w

samym środku listy. Jeżeli nie trafiono w poszukiwany element wiadomo już, w której

połowie listy mamy go szukać (bo lista jest uporządkowana). Wtedy rozpoczynamy

badanie odpowiedniej połowy listy od porównania wzorca elementu poszukiwanego z

jej elementem środkowym. Jeśli znów nie trafiliśmy powtarzamy działania dalej. W

pewnym momencie algorytm zawsze trafi na poszukiwany element, chyba że nie ma

go na liście.

Złożoność czasowa tego algorytmu wynosi F(N)=O(logN), gdzie N jest zależne od

ilości elementów.

Długość listy:

- 20 elementów (5 porównań)

- 1000000 elementów (20 porównań)

40. Wymień znane ci algorytmy sortowania i podaj ich złożoność.

Wartości podane dla średniego przypadku:

- sortowanie drzewiaste bez samoorganizacji drzewa: O(N2)

- sortowanie drzewiaste (lewostronne obejście): O(N)

- sortowanie bąbelkowe: O(N2)

docsity.com

- sortowanie z samoorganizacją drzewa: O(N*logN)

- sortowanie rekurencyjne (przez scalanie): O(N*logN)

- sortowanie typu quicksort: O(N*logN) - w najgorszym przypadku O(N2)

41. Czym różni się analiza złożoności algorytmu w średnim i w najgorszym

przypadku?

W analizie najgorszego przypadku badamy jaka będzie złożoność algorytmu w

przypadku wystąpienia najniekorzystniejszych danych (np.: iteracyjny przegląd n –

elementowej macierzy w poszukiwaniu elementu, którego na niej nie ma). Badanie

takie daje nam pewną wiedzę o zachowaniu się algorytmu w takim przypadku.

W analizie średniego przypadku staramy się przewidzieć jakie rozwiązanie będzie

pojawiało się najczęściej i właśnie dla niego staramy się obliczyć poziom złożoności

algorytmicznej. W obliczeniach średniego przypadku istotną rolę odgrywają założenia

o rozkładzie prawdopodobieństwa w zbiorze dopuszczalnych danych wejściowych.

Jeżeli mamy pewność, że szanse wystąpienia najgorszego wypadku są znikome, a

dany algorytm ma zadowalającą złożoność średniego przypadku można zastanowić

się nad jego zastosowaniem w danym programie.

42. Jaki problem nazywamy zamkniętym z punktu widzenia złożoności

obliczeniowej?

Problemy zamknięte, to problemy dla których ustanowione dolne i górne ograniczenia

złożoności czasowej schodzą się do tego samego przedziału. Znaczy to po prostu, że

górne ograniczenie złożoności danego algorytmu ma ten sam rząd co jego dolne

ograniczenie złożoności.

Jeśli dolna i górna ograniczoność czasowa się nie schodzą, mówimy wówczas o

istnieniu luk algorytmicznych.

43. Podaj przykłady algorytmów zamkniętych z punktu widzenia złożoności

obliczeniowej i przykłady luk.

Przykłady algorytmów zamkniętych z punktu widzenia złożoności obliczeniowej:

- proste sumowanie zarobków - dolne i górne ograniczenie złożoności wynosi: O(N)

- przeszukiwanie uporządkowanej listy – dolne i górne ograniczenie złożoności

wynosi: O(logN).

Przykłady luk algorytmicznych:

- problem minimalnego drzewa rozpinającego – górne ograniczenie złożoności

wynosi: O(N2), a dolne O(N)

44. Jaką złożoność ma problem Wieży Hanoi?

Problem Wieży Hanoi jest zamknięty: dolne i górne ograniczenie złożoności jest równe

(zarówno dla algorytmu iteracyjnego jak i rekurencyjnego) i wynosi: O(N2).

45. Co znaczy, że jedna funkcja złożoności jest ograniczona z góry przez drugą?

Oznacza to, że:

- dana funkcja ma złożoność o rząd niższą od funkcji, będącej jej górnym

ograniczeniem

- istnieje lepsze rozwiązanie danego problemu

46. Co znaczy, że problem ma złożoność wielomianową?

Problem ma złożoność wielomianową jeżeli, funkcja jego złożoności jest ograniczona z

góry przez NK dla pewnego K, czyli F(N)=O(NK)

47. Jakiego rodzaju problemy tworzą klasę problemów NP – zupełnych? Podaj

przykłady.

docsity.com

Klasę problemów NP – zupełnych tworzą problemy o następujących cechach:

- każdy taki problem da się w czasie wielomianowym przekształcić do innego

- dla wszystkich istnieją wątpliwe (wykładnicze) rozwiązania

- dla żadnego nie znaleziono rozsądnego (wielomianowego) rozwiązania

- dla żadnego nie udowodniono, że wymaga on czasu wykładniczego

- wszystkie te problemy są ze sobą powiązane (jeśli dla choćby jednego uda

się znaleźć wielomianowe rozwiązanie to będzie wiadomo, że inne także da

się rozwiązać w czasie wielomianowym i odwrotnie, jeśli wykaże się, że dla

choćby jednego nie istnieje wielomianowe rozwiązanie, dla innych także go

nie będzie)

Przykłady problemów NP – zupełnych:

- ścieżka Hamiltona

- ułożenia dwuwymiarowe (małpia układanka, wąż domino, figury

geometryczne)

- problem komiwojażera

- załadunek plecaka

48. Jakie byłyby konsekwencje udowodnienia, że wybrany problem NP – zupełny

nie może być rozwiązany deterministycznym algorytmem o złożoności

czasowej wielomianowej?

Gdyby udowodniono, że choćby jeden z problemów NP – zupełnych z pewnością nie

ma rozwiązania deterministycznie wielomianowego, znaczyłoby to, że inne problemy

tej klasy także go nie mają. Wynika to z zależności, że jeden problem tej klasy można

w czasie wielomianowym przekształcić w inny.

49. Jakie byłyby konsekwencje skonstruowania dla wybranego problemu NP –

zupełnie deterministycznego algorytmu o złożoności wielomianowej?

Gdyby udowodniono, że choć jeden z algorytmów klasy NP – zupełnej posiada

wielomianowe rozwiązanie udowodniono by równocześnie, że inne także go posiadają.

Wynika to z faktu, że każdy problem tej klasy da się w czasie wielomianowym

przekształcić w dowolny inny.

50. Na czym polega idea konstruowania algorytmów przybliżonych?

Główna idea konstruowania takich algorytmów bazuje na założeniu, że w wielu

przypadkach wynik gorszy od optymalnego jest i tak lepszy od całkowitego braku

rozwiązania dla danego zadania. Takie „zastępcze” algorytmy noszą nazwę

algorytmów aproksymacyjnych.

Przykład:

Problem komiwojażera jest problemem trudno-rozwiązywalnym (NP – zupełnym), ale

można w czasie wielomianowym wyznaczyć całkiem niezłe jego przybliżenie,

obchodzące wszystkie wierzchołki grafu.

Miarą dobroci takiego rozwiązania jest współczynnik Sa = otrzymany wynik /

najlepsze rozwiązanie.

W przypadku rozwiązania zastępczego dla problemu komiwojażera Sa1,5, a

złożoność czasowa tego rozwiązania wynosi zaledwie O(N3).

51. Jakie problemy nazywamy nierozstrzygalnymi? Opisz przykładowy problem.

Problem, dla którego nie ma żadnego poprawnie działającego algorytmu nazywamy

problemem nieobliczalnym. Jeśli problemem tym jest problem decyzyjny to

nazywamy go problemem nierozstrzygalnym.

Przykładem problemu nierozstrzygalnego jest problem domina.

Problem domina polega na sprawdzeniu i udzieleniu odpowiedzi „tak” lub „nie”, na

pytanie: czy danym zbiorem kart o wymiarach 1 na 1 da się poryć odpowiednio duży

teren. Problem jest o tyle trudny, że każda krawędź karty ma inny kolor, a założenie

jest takie, że kolory stykających się krawędzi muszą być identyczne.

docsity.com

Dla każdego algorytmu (zapisanego w dowolnym, dającym się efektywnie wykonać

języku programowania), który przeznaczony jest do rozstrzygnięcia problemu

domina, istnieje nieskończenie wiele zestawów danych wejściowych, dla których

algorytm ten będzie działał w nieskończoność lub da błędną odpowiedź.

52. Co to jest problem stopu w algorytmie? Co wiadomo o tym problemie?

Problem stopu jest problemem decyzyjnym, mającym dać odpowiedź „tak” lub „nie”

na pytanie: czy dany algorytm R napisany w języku L zatrzyma się dla danych

wejściowych X. Jak dotąd ustalono, że problem stopu zalicza się do problemów

nierozstrzygalnych, czyli nie istnieje taki algorytm, który w racjonalnym czasie

potrafiłby dać odpowiedź na to pytanie.

53. Co to jest maszyna Turinga, do czego służy i jak jest zbudowana?

Maszyna Turinga to uniwersalny model obliczeniowy, przeznaczony do efektywnego

wykonywania dających się efektywnie wykonać algorytmów.

Maszyna Turinga składa się z:

- skończonego alfabetu symboli

- skończonego zbioru stanów

- nieskończonej taśmy podzielonej na komórki

(każda komórka może zawierać jeden symbol)

- ruchomej głowicy czytająco – zapisującej

(głowica porusza się krokowo co jedną komórkę)

- diagramu przejść między stanami

(czasem zwanego po prostu diagramem przejść)

W zależności od rodzaju maszyny Turinga może się ona być:

- z taśmą jednostronną ograniczoną

- z wieloma taśmami i wieloma głowicami

- z taśma dwuwymiarową

- z głowicą bez funkcji zapisu

54. Jak wygląda sterowanie w maszynie Turinga?

Sterowanie maszyną odbywa się za pomocą diagramu przejść, który jest po prostu

grafem skierowanym, którego wierzchołki reprezentują stany, w jakich może znaleźć

się maszyna. Do oznaczenia stanów używa się często zaokrąglonych czworokątów.

Krawędź prowadząca ze stanu x do stanu y nazywa się przejściem międzystanowym i

etykietuje się ją kodem (a/b, kierunek), gdzie a/b są symbolami a kierunek to albo

lewo, albo prawo. Część a to wyzwalacz, a część b, kierunek to akcja.

(a/b, lewo) – jeśli trafisz na „a” zapisz tam „b” i idź o jedno pole w lewo.

(b/a, prawo) – jeśli trafisz na „b” zapisz tam „a” i idź o jedno pole w prawo.

55. O czym mówi teza Churcha-Turinga i jakie ma znaczenie dla analizy

złożoności problemów algorytmicznych?

Maszyna Turinga potrafi rozwiązać każdy efektywnie rozwiązywalny problem.

Rozwijając tę tezę, można dojść do wniosku, że jeśli istnieje jakiś szybki komputer,

który potrafi rozwiązać dany problem w czasie O(f(N)), to istnieje równoważna mu

maszyna Turinga, która potrzebuje na rozwiązanie tego problemu nie więcej niż

O(p(f(N))) czasu, dla pewnej ustalonej funkcji wielomianowej p.

56. Co to jest automat skończony i jak jest zbudowany?

Automat skończony to zdegenerowana maszyna Turinga. Posiada (tak jak pełna

maszyna Turinga) taśmę (pełniącą rolę pamięci) podzieloną na części (pseudo-

komórki) i głowicę wędrującą po zadanej taśmie. Różnice polegają na tym, że taśma

jest jednostronnie ograniczona, głowica może poruszać się tylko i wyłącznie w prawą

stronę i nie ma możliwości zapisu (zapis jest zbędny bo z ograniczenia ruchu w jedną

docsity.com

stronę wynika, że i tak maszyna ta nie mogłaby powrócić do miejsca, w którym coś

zapisała).

Sterowanie automatem odbywa się w ten sam sposób co pełną maszyną Turinga,

czyli za pomocą diagramu przejść międzystanowych zapisanego na taśmie. Diagram

ten jest jednak również zdegenerowany do jedynie dwóch elementów: <b,kierunek>

Automat skończony wykorzystywany jest przede wszystkim w problemach

decyzyjnych.

57. Czy automat skończony może służyć do przedstawiania algorytmów

obliczeniowych?

Automat skończony nie może być stosowany do wykonywania obliczeń, bo nie potrafi

liczyć. Wynika to z jego ograniczeń konstrukcyjnych – porusza się on tylko w jedną

stronę (zatem nie może powracać do miejsc w których już była) i nie posiada funkcji

zapisu (bo i tak nie mogłaby powrócić do zapisanych danych). Bez możliwości zapisu

maszyna nie jest wstanie wykonywać działań matematycznych a jedynie może

rozwiązywać problemy decyzyjne.

58. Jakie znasz modele współpracy procesorów pracujących równolegle?

Pamięć dzielona:

- dzielenie dostępu tylko podczas odczytywania

- dzielenie dostępu podczas zapisywania

Nieograniczona pamięć dzielona jest praktycznie niemożliwa do zrealizowania, ze

względu na bardzo dużą złożoność połączeń elementów pamięci i procesorów

Sieci o ustalonej konfiguracji połączeń:

- każdy procesor może być połączony z co najwyżej pewną stałą liczbą (w

zależności od sieci) liczbą procesorów sąsiadujących

- sieci są konstruowane często jako równoległe maszyny rozwiązujące

szczególne problemy algorytmiczne

Dobrze znanym przykładem są sieci logiczne (boolowskie): bramki – procesory

realizujące proste funkcje logiczne na bitach (AND, OR, NOT, NAND, itp.)

59. Wyjaśnij pojęcie zasobu krytycznego w systemach pracujących współbieżnie

(problem prysznica i chińskich filozofów).

Zasób krytyczny to taki zasób systemowy, który jest ograniczony ilościowo i

jednocześnie przeznaczony do użytku wszystkich pracujących w danym systemie

procesorów. Zasobem krytycznym może być pamięć operacyjna, linie lub łącza

transmisyjne.

Analogią do zasobu krytycznego w problemie „prysznica hotelowego” jest sam

prysznic. Jest on tylko jeden, a wszyscy chcą z niego korzystać. W przykładzie

„chińskich filozofów” zasobem krytycznym są pałeczki. Dla N filozofów jest zaledwie

N/2+1 pałeczek, a każdy z filozofów potrzebuje dwóch by się posilić.

60. Wyjaśnij pojęcie zastoju w systemach pracujących współbieżnie.

Zastój w systemach pracujących współbieżnie to sytuacja, w której następuje

zakleszczenie wszystkich procesorów i żaden z procesorów, nigdy już nie otrzyma

dostępu do zasobu krytycznego.

Analogia w przykładzie „prysznica hotelowego” jest sytuacja, gdy jeden z gości

hotelowych zasłabł pod prysznicem, jeden z gości hotelowych nie przychodzi

skorzystać z prysznica gdy nadchodzi jego kolej lub po prostu jeden pokój jest pusty.

W takim wypadku numer na tablicy informacyjnej umieszczonej na drzwiach

prysznica nigdy już się nie zmieni i nigdy żaden inny mieszkaniec hotelu nie będzie

mógł skorzystać z prysznica.

docsity.com

61. Wyjaśnij pojęcie zagłodzenia w systemach pracujących współbieżnie.

Zagłodzenie procesora w systemie pracującym współbieżnie to sytuacja, w której

jednemu z procesorów brakuje dostępu do zasobu krytycznego zawsze gdy ten jest

mu potrzebny.

Analogia w przykładzie „prysznica hotelowego” jest taka, że w pierwotnej wersji jeden

z gości zameldowanych w ów hotelu, przychodzi sprawdzić czy prysznic jest wolny, i

zawsze trafia na sytuację kiedy jest zajęty.

62. Wyjaśnij pojęcie aktywnego czekania w systemach pracujących

współbieżnie.

Aktywne czekanie to czekanie z ciągłym sprawdzaniem, czy dostęp do zasobu

krytycznego przypadkiem nie został zwolniony.

Analogią do aktywnego czekania w przypadku „prysznica hotelowego” było ciągłe

sprawdzanie mieszkańców hotelu, czy na tablicy wstępu pod prysznic nie pojawił się

przypadkiem numer ich pokoju. W przypadku „chińskich filozofów” było to ciągłe

sprawdzanie czy przypadkiem dany filozof nie ma w danej chwili dostępu do dwóch

pałeczek.

docsity.com

komentarze (0)
Brak komentarzy
Bądź autorem pierwszego komentarza!
To jest jedynie podgląd.
3 shown on 7 pages
Pobierz dokument