ZagadnieniaSHORT
pdf > do ÂściÂągnięcia > download > ebook > pobieranie
 
Cytat
Ab igne ignem - z ognia ogień. (Cycero). (Cycero)
Start Zaćmienie, Zajecia 2, zaaowanane,
 
  Witamy

ZagadnieniaSHORT, Studia, Egzamin inżynierski
[ Pobierz całość w formacie PDF ]

Notacja O (omikron)
– ograniczenie funkcji f(n) z
góry. Służy do szacowania czasu działania w przypadku
pesymistycznym

Notacja theta
– ograniczenie funkcji f(n) z góry i z
dołu. Asymptotyczne przybliżenie dokładne.

Notacja omega
– ograniczenie funkcji f(n) z dołu.
Służy do szacowania czasu działania w przypadku
najlepszym.
1. AISD
1.1. Schemat blokowy algorytmu. Elementy
notacji, reguły stosowania
Schemat blokowy
– forma przedstawienia algorytmu, czyli
skończonego uporządkowanego zbioru jasno zdefiniowanych
czynności koniecznych do wykonania pewnego zadania w
skończonej liczbie kroków
Problemy NP-zupełne
(nie da się ich rozwiązać w czasie
wielomianowym a zwykle 2^N)

Problem komiwojażera
– np. znalezienie najkrótszej
trasy pomiędzy kilkoma miastami

Problem plecakowy
– jak wybrać przedmioty, tak aby
ich sumaryczna wartość była jak największa i nie
przekroczyła pojemności plecaka
Elementy notacji:

Blok graniczny (owal),

Blok we/wy (równoległobok),

Blok obliczeniowy (prostokąt)

Blok decyzyjny (romb)
1.4. Algorytmy sortowania oraz
charakterystyka ich złożoności
obliczeniowej.
Reguły stosowania:

Każda operacja umieszczona w bloku

Schemat ma jedną skrzynkę
Start
i przynajmniej
jedną
Stop

Skrzynki są ze sobą połączone

Ze skrzynki wychodzi jedno połączenie.
Wyjątki
: ze
Stop
nie wychodzi żadne, z
bloku decyzyjnego
wychodzą dwa.
Algorytmy ze złożonością O(n
2
) i sortowaniem w miejscu
Sortowanie bąbelkowe (Bubble sort)
Zasada działania
– cykliczne porównywanie par sąsiadujących
elementów i zamiana ich kolejności w przypadku niespełnienia
kryterium porządkowego zbioru. Operację tę wykonujemy
dotąd, aż cały zbiór zostanie posortowany.
1.2. Struktury listowe. Przykłady
zastosowań w praktyce
Sortowanie w miejscu
- wymaga stałej liczby dodatkowych
struktur danych, która nie zależy od liczby elementów
sortowanego zbioru danych. Dodatkowa złożoność pamięciowa
jest zatem klasy O(1). Sortowanie odbywa się wewnątrz zbioru.
Lista jednokierunkowa

Każdy element oprócz wartości, posiada wskaźnik do
następnego elementu.

Trzeba posiadać wskaźnik do pierwszego elementu

Ostatni element wskaźnik ustawiony na adres pusty

Brak dostępu swobodnego - przeszukiwanie po
każdym elemencie – złożoność O(n)

Proste wstawianie i usuwanie elementów
Sortowanie przez wybór (Select sort)
Zasada działania
Szukamy w zbiorze elementu najmniejszego i wymieniamy go z
elementem na pierwszej pozycji.
W ten sposób element najmniejszy znajdzie się na swojej
docelowej pozycji.
W identyczny sposób postępujemy z resztą elementów.
Lista dwukierunkowa

Każdy element oprócz wartości, posiada wskaźnik do
poprzedniego i następnego elementu.

Trzeba posiadać wskaźnik do pierwszego i ostatniego
elementu.

Brak dostępu swobodnego – przeszukiwanie po
każdym elemencie z dowolnej strony

Proste wstawianie i usuwanie elementów
Sortowanie przez wstawianie (insertion sort)
Działa jak układanie kart pobieranych z talii.
Każdą pobraną kartę porównujemy z kartami, które już
trzymamy w ręce i szukamy dla niej miejsca przed pierwszą
kartą starszą (młodszą w przypadku porządku malejącego). Gdy
znajdziemy takie miejsce, rozsuwamy karty i nową wstawiamy
na przygotowane w ten sposób miejsce
Zastosowanie w praktyce

Proste bazy danych (np. nieograniczona rozmiarem
baza adresów)

Ze zbioru N k-literowych słów utworzyć listy
wyrazów zaczynających się na daną literę
Algorytmy ze złożonością O(nlogn) używające metody dziel i
zwyciężaj
1.3. Złożoność obliczeniowa. Miary
złożoności, problemy NP-zupełne.
Sortowanie przez scalanie (Merge sort)
Dzielenie

Rekurencyjnie dzielimy zbiór na dwie przyległe
połówki

Wynik scalenia ma być umieszczony z powrotem w
tym samym zbiorze.
Złożoność obliczeniowa
Ilość zasobów komputera jakiej potrzebuje dany algorytm.
Złożoność czasowa lub pamięciowa. Złożoność jest
proporcjonalna do jakiejś funkcji.
Scalanie
Miary złożoności
1

Przygotuj pusty zbiór tymczasowy

Dopóki żaden ze scalanych zbiorów nie jest pusty,
porównuj ze sobą pierwsze elementy każdego z nich
i w zbiorze tymczasowym umieszczaj mniejszy z
elementów usuwając go jednocześnie ze scalanego
zbioru.

W zbiorze tymczasowym umieść zawartość tego
scalanego zbioru, który zawiera jeszcze elementy.

Zawartość zbioru tymczasowego przepisz do zbioru
wynikowego i zakończ algorytm.
Podstawowe typy:
Minimalne drzewo rozpinające
(dla grafu) – podzbiór
krawędzi grafów, który łączy wszystkie wierzchołki, gdzie suma
wszystkich wag krawędzi jest najmniejsza
Drzewo poszukiwań binarnych
– drzewo binarne (liczba
synów wierzchołka nie większa niż dwa). W drzewie takim
szybko się wyszukuje, a co za tym idzie wstawia i usuwa
elementy.
Metody przeszukiwania:

Wzdłużna - preorder: korzeń, lewe poddrzewo, prawe
poddrzewo.

Poprzeczna - inorder: lewe poddrzewo, korzeń, prawe
poddrzewo.

Wsteczne - postorder: lewe poddrzewo, prawe
poddrzewo, korzeń.
Sortowanie szybkie (Quick sort)

Sortowany zbiór dzielimy na dwie części (piwotem –
zwykle średnim elementem zbioru) w taki sposób,
aby wszystkie elementy leżące w pierwszej części
(zwanej lewą partycją) były mniejsze lub równe od
wszystkich elementów drugiej części zbioru (zwanej
prawą partycją).

Każdą z partycji sortujemy rekurencyjnie tym samym
algorytmem.

Otrzymujemy posortowany zbiór
Przykłady zastosowań
Przechodząc drzewo BST metodą inorder uzyskuje się ciąg
wartości posortowanych rosnąco.
UWAGA
: w przypadku pesymistycznym (źle dobrany piwot i
niekorzystne ułożenie danych wejściowych) algorytm
degraduje się do O(n
2
).
1.6. Funkcje skrótu oraz przykłady
zastosowań w informatyce.
1.5.Struktury drzewiaste, charakterystyka
podstawowych typów drzew oraz przykłady
ich zastosowań.
Funkcja skrótu
to funkcja, która przyporządkowuje każdej
liczbie wartość określaną jako hasz. Jeżeli dwie liczby są różne,
to ich hashe, z wysokim prawdopodobieństwem, też powinny
być różne.
Struktury drzewiaste
zawierają:

Korzeń (element bez poprzedników)

Każdy inny element ma dokładnie jednego
poprzednika

Dla wszystkich elementów oprócz liści (el. ostatnich)
istnieje co najmniej jeden element następny
Zastosowania

buduje się za ich pomocą efektywne struktury danych
(tablica haszująca),

używa się ich do weryfikacji poprawności przesyłu
danych,

stosuje się je w kryptografii.
2
2. JITP
Nie można wymyślać swoich operatorów
Nie można zmieniać priorytetów operatorów
Nie można zmienić argumentowości operatorów (czy
operator jest jedno-, czy dwuargumentowy)
Nie można zmienić łączności operatorów
Przynajmniej jeden z typów argumentów operatora musi
być typu zdefiniowanego przez użytkownika
2.1. Kompilacja i interpretacja języków
programowania, porównanie i przykłady
zastosowania
Kompilacja

Proces automatycznego tłumaczenia kodu
napisanego w
języku programowania
na
kod
maszynowy
.

Dane wejściowe nazywa się
kodem źródłowym
.
Jeśli operator definiujemy jako funkcję składową klasy, to
ma ona zawsze o jeden argument mniej niż ta sama funkcja
napisana w postaci funkcji globalnej. Ten „brakujący”
argument – w wypadku funkcji składowej – spowodowany
jest istnieniem wskaźnika this.
Interpretacja

Przekształcanie instrukcji
programu
na bieżąco do
kodu maszynowego lub innej formy pośredniej i
natychmiastowe ich wykonywanie.

Zmusza to do ustawicznego tłumaczenia
wykonywanych instrukcji, co wielokrotnie
wydłuża czas działania programu.

Łatwość dokonywania zmian w programie w
trybie
konwersacyjnym
.
Funkcja operatorowa (jako zwykła funkcja globalna) nie
musi być przyjacielem klasy. Można definiować operatory
dla klas już wcześniej napisanych (na przykład w
bibliotekach). Dopiero jeśli f. operatorowa chce mieć dostęp
do składników prywatnych klasy trzeba ją z klasą
zaprzyjaźnić.
Istnieją operatory predefiniowane, które automatycznie
generowane są dla każdej klasy (= , & new delete)
Porównanie

Wykonanie programu za pomocą interpretera jest
wolniejsze

zajmuje więcej zasobów systemowych niż
wykonanie kodu skompilowanego

może zająć relatywnie mniej czasu niż kompilacja i
uruchomienie.
Operatory, które muszą być niestatycznymi funkcjami
składowymi: = [] () ->
Przykład
Dodanie dwóch obiektów może oznaczać dodanie ich
jakiegoś głównego składnika.
2.3. Mechanizm dziedziczenia.
Dziedziczenie jedno i wielokrotne.
Podaj
przykład wykorzystania.
Zastosowania kompilacji

Tłumaczenie kodu programu w postaci czytelnej
dla człowieka na zbiór rozkazów maszynowych,
które mogą być wykonane przez procesor
komputera lub
maszynę wirtualną
.

Konwersja między językami programowania.
Dziedziczenie
pozwala klasie przejmować właściwości
(metody, atrybuty) innych klas. Dzięki temu nowe klasy
muszą implementować jedynie dodatkowe właściwości
(tworząc klasę wystarczy wskazać, czym różni się ona od
już istniejącej).
Rozwiązanie takie umożliwia nie tylko redukcję rozmiarów
kodu, ale pozwala także zachować jego spójność, ponieważ
identyczne właściwości przestają pojawiać się w wielu
miejscach kodu.
2.2 Mechanizm przeładowania operatorów
w językach obiektowych. Podaj przykład
Działa podobnie jak przeładowanie funkcji.
Pozwala na łatwiejsze i bardziej intuicyjne dodawanie,
odejmowanie obiektów (lub używanie innych operacji).
Różnice:
- funkcja musi nazywać się operator+, operator- itp.
Klasa pochodna nie dziedziczy
:
* Konstruktorów
* Destruktorów
* Operatora przypisania
Funkcja będąca przeładowaniem operatora:
- nazywa się operator@ - gdzie @ to np. +, -, *, &, >>, <<,
New, delete, () [])
- co najmniej jeden z argumentów przyjmuje obiekt danej
klasy (
nie wskaźnik!
)
Dziedziczenie jednokrotne
Klasa może mieć tylko jedną klasę nadrzędną (Java)
Dziedziczenie wielokrotne (polimorfizm)
Klasa może mieć wiele klas nadrzędnych (pozwala na
tworzenie klas o niemal dowolnych zachowaniach) (C++)
Funkcja operatorowa może być:
- Zwykłą funkcją globalną (zwykle gdy nie chcemy
modyfikować obiektu)
- Niestatyczną funkcją składową klasy (zwykle gdy chcemy
modyfikować składniki prywatne obiektu)
Zastosowanie
Odwzorowanie hierarchiczności modelu rzeczywistego.
Nie można przeładowywać: . .* :: ?:
3
2.3 Klasy astrakcyjne i funkcje wirtualne w
językach obiektowych. Przykład
praktycznego zastosowania.
Zakres ważności obiektu
Zakres lokalny
– zmienna jest ważna w obrębie jakiegoś
bloku
Funkcje wirtualne
Zakres: blok funkcji
– taki zakres ma etykieta (jest znana
w całej funkcji, nawet w linijkach poprzedzających). Z tego
faktu wynika, że nie można instrukcją goto przeskoczyć z
wnętrza jednej funkcji do wnętrza innej.
Def. Wskaźnik do obiektu klasy podstawowej nadaje się
także do pokazania na obiekt klasy pochodnej.
virtual
obok funkcji w klasie podstawowej mówi, że od tej
pory we wszystkich dalszych pokoleniach kompilator ma
użyć swojej inteligencji i używać funkcji definiowanych w
tych dalszych pokoleniach (tak jakby funkcja była
wywołana na rzecz konkretnego obiektu (z pokolenia))
Zakres: obszar pliku
– jeśli w jednym z plików, na
zewnątrz jakiegokolwiek bloku (także bloku funkcji)
zadeklarujemy jakąś nazwę, to mówimy wówczas, że taka
nazwa jest
globalna
(ale od miejsca deklaracji, do końca
pliku). Ma ona zakres ważności pliku.
Aby mieć zakres ważności w kilku plikach, należy w
plikach, które chcą korzystać ze zmiennej np. int i, wszędzie
podać
deklarację
extern int i;
Jeżeli chcemy, aby zmienna
globalna
nie była dostępna z
innych plików, stawiamy przed nią słowo
static
.
Przykład
Klasa instrument posiada wirtualną funkcję
wydaj_dzwiek
,
która zwraca nieokreślony dźwięk. Klasa trąbka
dziedzicząca po klasie instrument posiada funkcję
wydaj_dzwiek
, która zwraca dźwięk trąbki. Jeżeli
utworzymy wskaźnik na instrument i pokażemy nim na
trąbkę, po wywołaniu funkcji wydaj dźwięk otrzymamy
dźwięk trąbki. Gdyby funkcja nie była wirtualna
otrzymalibyśmy nieokreślony dźwięk.
Zakres: obszar klasy
(tam atrybuty widoczności
składników)
Zasłanianie nazw:
zmienne lokalne przesłaniają globalne,
do globalnej można się odnieść przez operator ::zmienna.
Do innej lokalnej nie da się.
Fragment kodu, w którym wywołuje się funkcję wirtualną
wykazuje
polimorfizm
(wielość form). UWAGA:
wywołanie funkcji wirtualnej jest polimorficzne, nie sama
funkcja.
Atrybuty widoczności i konsekwencje
Etykieta private
– oznacza, że deklarowane za nią
składniki (funkcje i dane) są dostępne tylko z wnętrza klasy.
Tylko funkcje będące składnikami klasy mogą te prywatne
dane odczytywać i modyfikować (nie licząc funkcji
zaprzyjaźnionych z tą klasą)
Tylko funkcja składowa może być wirtualna. Funkcja
globalna
nie może
być wirtualna.
Funkcja wirtualna nie może być typu static (o tym którą
wersję funkcji wywołać decyduje się na podstawie obiektu a
nie klasy)
Etykieta public
– publiczne składniki oprócz wnętrza klasy
mogą być używane spoza zakresu klasy (funkcje również).
Zwykle składnikami public są funkcje składowe, dzięki
którym z zewnątrz dokonuje się operacji na danych
prywatnych
Funkcje wirtualne pozwalają na pisanie programów, o
których już w momencie pisania wiadomo, że w przyszłości
będą musiały być ciągle modyfikowane.
Klasy abstrakcyjne
Etykieta protected
– jak private, ale dostępne dla klas
wywodzących się od tej klasy (tam składnik też staje się
private)
Klasa abstrakcyjna to klasa, która nie reprezentuje żadnego
konkretnego obiektu (np. klasa ssak).
Istnieje tylko po to, aby mieć, aby ją dziedziczyć. Wspólne
cechy dla kilku klas definiujemy jednokrotnie.
W takiej klasie możemy zdefiniować funkcję
czysto
wirtualną
(taką która nigdy nie zostanie wywołana – ale
będą występować jej definicje w każdej klasie pochodnej)
Przez domniemanie składniki są
private
Dziedziczenie składników:
Private –
niedostępny z klasy pochodnej, oprócz
odziedziczonej funkcji publicznej
Protected
– dostępny z klasy pochodnej jak by był public
Public –
public
Definicja funkcji czysto wirtualnej:
void virtual
funkcja() = 0;
2.4 Obiekty lokalne i globalne. Atrybut
widoczności i konsekwencje jego
wykorzystania.
4
3. SO

Wektor bitowy
- Każdy blok dyskowy (jednostka
alokacji) jest reprezentowany przez jeden bit w
wektorze superbloku. Wartość „1” bitu oznacza, że
dany blok jest wolny.

Lista powiązana
- wszystkie wolne bloki są
powiązane w taki sposób, że w bloku poprzednim
znajduje się indeks bloku następnego. Indeks
pierwszego bloku znajduje się w specjalnym
miejscu w systemie plików.

Grupowanie
- Pierwszy wolny blok zawiera
indeksy n innych wolnych bloków, z których n-1
dotyczy bloków do alokacji przez pliki, a n-ty blok
zawiera znowu n kolejnych indeksów kolejnych
wolnych bloków.

Zliczanie
- W przypadku kilku kolejnych,
przylegających do siebie wolnych bloków
pamiętany jest tylko indeks pierwszego z nich oraz
liczba wolnych bloków znajdujących się
bezpośrednio za nim.
3.1. Organizacja pamięci pomocniczej -
metody przydziału miejsca na dysku;
przykłady znanych sy
stemów
plikowych.
Metody przydziału miejsca na dysku
Przydział ciągły -
plik zajmuje ciąg kolejnych bloków
(jednostek alokacji)
Zalety:

dostęp do plików jest efektywny – niewielkie ruchy
głowic dyskowych

szybka lokalizacja bloków pliku zarówno przy
dostępie swobodnym (dostęp do dowolnej
jednostki alokacji w tym samym czasie) i
sekwencyjnym (taśma magnetyczna)
Wady:

Fragmentacja zewnętrzna – po plikach zostają
dziury

Problemy z rozszerzaniem plików – trzeba
przenieść w inne miejsce
Metoda w Linux
Bloki (podstawowa jednostka) łączone są w grupy
(zwiększa to lokalność plików)

Podczas przydziału i-węzła plikowi, który jest
katalogiem wyszukiwana jest grupa z największą
liczbą wolnych i-węzłów.

Jeżeli nie jest to katalog to zaczyna się szukać
wolnego i-węzła od grupy, w której znajduje się i-
węzeł katalogu tego pliku.
Algorytmy przydziału i-węzłów i bloków danych powodują
ich równomierne rozłożenie w grupach.
Przydział listowy
- plik jest listą powiązanych bloków,
dowolnie rozproszonych w dostępnej przestrzeni adresowej
Zalety:

brak fragmentacji zewnętrznej,

łatwy dostęp sekwencyjny
Wady:

Dostęp swobodny utrudniony (aby przejść do
poprzedniego bloku trzeba przeglądać listę od
początku)

Utrata jednego bloku uniemożliwia dostęp do
kolejnych bloków
3.3.
Algorytmy planowania przydziału
procesora.
Przydział indeksowy
– indeksy do bloków dyskowych
skupione są w bloku indeksowym (tablicy).
Zalety :

Łatwy dostęp swobodny i sekwencyjny

Brak problemu fragmentacji zewnętrznej
Wady:

Część przestrzeni adresowej przeznaczona na blok
indeksowy
Planowanie przydziału procesora
– którym procesom z
kolejki procesów gotowych do działania ma być
przydzielona jednostka centralna
FCFS
– First Come First Server – kto pierwszy przyjdzie,
ten pierwszy będzie obsłużony
SJF
– Shortest Job First - najpierw najkrótsze zadanie

Niewywłaszczający – żaden proces nie jest
wywłaszczany podczas wykonywania fazy
procesora

Wywłaszczający (SRTF – Shortest remaining time
first) – proces jest wywłaszczony jeśli jego faza
procesora jest krótsza od następnej fazy
Algorytm priorytetowy
– procesor jest przydzielany
procesowi o najwyższym priorytecie

Może dojść do zagłodzenia – aby zapobiec, stosuje
się podwyższanie priorytetów dla procesów długo
oczekujących
Algorytm rotacyjny
(round-robin) – FCFS z cykliczną
kolejką (przydzielany jest kwant czasu procesora)
Wielopoziomowe planowanie kolejek
– każda kolejka ma
swojego planistę, między kolejkami również planuje się
przydział
Przykłady znanych systemów plikowych

FAT (File allocation table) – tablica alokacji
plików

EXT3 (third extended filesystem) –
wielopoziomowy przydział indeksowy +
księgowanie

NTFS (New technology filesystem) – ACL,
dziennik operacji dyskowych, wsparcie
metadanych
3.2.
Metody zarządzania wolną
przestrzenią na dysku; omów metodę
stosowaną w systemie Linux
3.4.
Algorytmy zastępowania stron
Metody:
5
[ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • imikimi.opx.pl
  • comp
    StartZagadnienia w chemii organicznej, Chemia, Organiczna, Chemia organicznaZachowania Organizacyjne, Studia Zarządzanie PWR, Zarządzanie PWR I Stopień, III Semestr, Zachowania organizacyjnezabawy muzyczne0007, Studia, Praktyki, Zabawy muzycznezabawy muzyczne0020, Studia, Praktyki, Zabawy muzyczneZagadnienia na finanse, GWSH, 2 sem, Podstawy finansów, Podstawy finansówZadania domowe - treści, Studia, PW - materiały, Informatyka, Informatyka II, Zadania domoweZaliczka na poczet wynagrodzenia(1), Rachunkowość finansowa, Rachunkowosc finansowa, Rachunkowość, Rachunkowość zbiór zagadnieńZaawansowane techniki programowania - 03. Szablony, Studia podyplomowe - mechatronika i coś tam jeszcze, Zaawansowane techniki programowaniaZagadnienia filozofii, FilozofiaZawieszenie pneumatyczne(1), Scania
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • kranzfafka.pev.pl
  • Cytat

    Filozof sprawdza się w filozofii myśli, poeta w filozofii wzruszenia. Kostis Palamas
    Aby być szczęśliwym w miłości, trzeba być geniuszem. Honore de Balzac
    Fortuna kołem się toczy. Przysłowie polskie
    Forsan et haec olim meminisse iuvabit - być może kiedyś przyjemnie będzie wspominać i to wydarzenie. Wergiliusz
    Ex Deo - od Boga.

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com