Studiuj dzięki licznym zasobom udostępnionym na Docsity
Zdobywaj punkty, pomagając innym studentom lub wykup je w ramach planu Premium
Przygotuj się do egzaminów
Studiuj dzięki licznym zasobom udostępnionym na Docsity
Otrzymaj punkty, aby pobrać
Zdobywaj punkty, pomagając innym studentom lub wykup je w ramach planu Premium
Społeczność
Odkryj najlepsze uniwersytety w twoim kraju, według użytkowników Docsity
Bezpłatne poradniki
Pobierz bezpłatnie nasze przewodniki na temat technik studiowania, metod panowania nad stresem, wskazówki do przygotowania do prac magisterskich opracowane przez wykładowców Docsity
Notatki dotyczące tematów z dziedziny informatyki: wstep do informatyki; pytania i odpowiedzi.
Typologia: Notatki
1 / 7
Wynikają ze złego zaprojektowania algorytmu: np.:
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:
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:
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)/N0.
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(N^2 ). Algorytm o czasie wykonania F(N) ma złożoność kwadratową jeżeli: lim F(N)/N^2 =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:
40.Wymień znane ci algorytmy sortowania i podaj ich złożoność. Wartości podane dla średniego przypadku:
Klasę problemów NP – zupełnych tworzą problemy o następujących cechach:
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 Sa1,5, a złożoność czasowa tego rozwiązania wynosi zaledwie O(N^3 ).
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.
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:
W zależności od rodzaju maszyny Turinga może się ona być:
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ą
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.