• Om kompendiet og faget
Dette kompendiet gir kun en innføring i emnet Algoritmer
og
datastrukturer
.
Dessverre har ikke kompendiet blitt fullført helt frem til det som var planen. Men de delemnene som normalt inngår i et innføringskurs,
er dekket. Det er imidlertid en del litt mer videregående stoff som er påbegynt, men ikke ordentlig fullført.
De som ønsker mer omfattende og mer detaljert
kunnskap, har imidlertid mange muligheter. Første skritt er nok å gå til internasjonale lærebøker. Det finnes også en enorm mengde stoff på internett.
Men det som ligger der er ofte fragmentert og ikke alltid pedagogisk tilrettelagt. Men en kan finne gode lærebøker der (open source).
På archive.org ligger det mye.
Robert Sedgewick
er en av de store internasjonale navnene innen Algoritmer og datastrukturer
. Her er to gode (men litt avanserte) bøker (open source) der
han er medforfatter:
Sedgewick & Wayne, Algorithms
, 4th ed. 2011
Sedgewick & Flajolet, Analysis of Algorithms
, 2.ed. 2013
• Weblesere
Kompendiet er nettbasert og er skrevet i html. Det tilfredsstille XHTML 1.0 Strict
og burde derfor vises stort sett likt av alle weblesere. Forfatteren av dette kompendiet er forøvrig en svoren tilhenger av
Firefox.
Kompendiet finnes også i pdf-versjon.
Det anbefales sterkt at utskrifter gjøres fra den. Det gir best resultat.
• Fargekoder
→ Fagstoff → Tilleggsstoff → Uoppdatert/ufullført → Matematikk
• Kompendiestruktur
Kompendiet er delt opp i kapitler
, hvert kapittel
har flere delkapitler
og hvert delkapittel består av en serie avsnitt
.
Kapitteloversikten står i innholdslisten. Obs: Alle lenker
her og ellers i kompendiet (bortsett fra i innholdslisten) er markert med brunrød skrift.
Alle lenker skifter til hvit skrift på blå bakgrunn når markøren føres over lenken.
Kapitlene har nummer (fra 1 og oppover) og tittel. For eksempel har Kapittel 1
tittelen
Grunnleggende begreper og teknikker. Hvert delkapittel har
undernummer (fra 1 og oppover) og undertittel. Delkapittel 1.1
er derfor første delkapittel i
Kapittel 1
og har undertittelen Algoritmer og effektivitet.
Hvert delkapittel er lagt ut som en separat html-fil (og pdf-fil).
• Utskrift
Som nevnt over utgjør hvert delkapittel en separat html-fil
. I tillegg finnes
det en pdf-fil
med samme navn og innhold. Hvis en ønsker en papirutskrift av et delkapittel,
anbefales det sterkt at det gjøres ved å skrive ut pdf-filen. Se f.eks.
kap11.pdf som er pdf-filen for Delkapittel 1.1.
Da vil alle få lik utskrift og utskriften blir slik forfatteren av kompendiet ønsker at det
skal se ut. Utskrift direkte fra html-filen kan skape problemer.
De forskjellige webleserne formaterer ikke sidene på nøyaktig samme måte. Det kan f.eks.
være forskjeller i antall linjer per utskriftsside. En effekt kan
være at en figur deles i to - den ene delen nederst på en side og den andre delen øverst
på neste side. Pdf-filen er laget for å unngå slike ting.
• Avsnitt
Hvert delkapittel er delt opp i flere avsnitt. Symbolet
(og i farger som ,
og
)
markerer starten på et avsnitt. Avsnittene har nummer (fra 1 og oppover) og tittel.
Avsnitt 1.1.1
er første avsnitt i Delkapittel 1.1
og har undertittelen
Hva er en algoritme? Noen få avsnitt
er markert med symbolet
. Slike
avsnitt inneholder vanligvis matematiske utledninger og
kan derfor være litt mer krevende. Et avsnitt avsluttes
normalt med en serie øvingsoppgaver og de er markert med symbolet
.
Ved å klikke på den blå kulen
kommer en til en side med løsningsforslag. De er ikke alltid fullstendige, men de som hører
til ukeoppgaver vil være oppdatert.
• «Nummereringer» innenfor et avsnitt
I et avsnitt vil det ofte stå ting som det er aktuelt å referere til senere. Det kan f.eks. være
definisjoner, setninger, figurer, tabeller og kode.
Hvis det er flere refererbare ting av samme type, kommer de som a), b), c), osv.
F.eks. inneholder Avsnitt 1.1.8 følgende
«nummererte» kodebiter:
Programkode 1.1.8 a),
Programkode 1.1.8 b), · · · · ,
Programkode 1.1.8 e).
• Syntaksmarkering
I Java-koden brukes fast tegnavstand (Consolas
eller Courier New
) og
syntaksmarkering (eng: syntax highlighting). Obs: I Consolas blir sifferet 0 skrevet
som 0. Alle reserverte Java-ord
er skrevet med fet type og lilla farge.
Kommentarer er med kursiv og grønn farge.
Tegnstrenger (og noe annet) har blå farge.
Dette svarer til standardinnstillingene i Eclipse
.
Flg metode viser hvordan dette tar seg ut:
public static int maks(int[] a) // a er en heltallstabell { if (a.length < 1) throw new IllegalArgumentException("a er tom!"); int m = 0; // indeks til største verdi for (int i = 1; i < a.length; i++) // obs: starter med i = 1 { if (a[i] > a[m]) m = i; // indeksen oppdateres } return m; // returnerer indeksen/posisjonen til største verdi } // maks
• Lenker i teksten
I teksten vil det mange steder bli referert til ting som står andre steder.
Det kan være definisjoner, setninger, figurer, tabeller og programkode.
De har alle navn og nummer. F.eks. refererer
Figur 1.2.1 a) til Figur a) i
Avsnitt 1.2.1.
Hvis en slik referanse har rødbrun farge (og skifter
til hvit skrift med blå bakgrunn når markøren beveges over den) er den klikkbar.
Dermed kan du få et direkte oppslag på den referansen. Du kan velge å få det i samme vindu (klikk),
i et nytt vindu/fane (Ctrl+klikk) eller i en ny utgave av webleseren (Shift+klikk). Det siste
kan være aktuelt hvis du vil ha både den opprinnelige siden og det det refereres til
ved siden av hverandre. Da forminsker du slik at begge får plass.
• Navigering
Du kan, siden dette er html-dokumenter, navigere ved å bruke de vanlige
tastene som virker på samme måte i alle weblesere. Dvs.
Home, End, Backspace, Shift+Backspace, PageUp, PageDown, ↓ og ↑. Du kan også bruke mulighetene i den
lille menyen du får ved et høyre museklikk eller ved symbolene øverst til venstre i skjermbildet.
Symbolene varierer mellom webleserne. F.eks. har Firefox symbolene ←, →,
og .
Vær klar over at ikonet ikke
er det samme som tasten med navn Home. Et trykk på Home bringer deg øverst på inneværende (current) side, mens
bringer deg til webleserens startside. En webleser
har normalt en meny der du selv kan bestemme hva som skal være startside. Det er også mulig å fjerne
fra verktøylinjen (toolbar).
• Navigering innen et delkapittel
Kompendiet har noen ekstra navigeringsmuligheter. Symbolet (og ) som markerer
starten på et avsnitt, er
klikkbart. Et klikk bringer deg ned til neste avsnitt (opp til toppen fra siste avsnitt).
Prøv dette på Delkapittel 1.1. Tilbake (back m.m.) bringer deg motsatt vei.
Tabulatorene (Tab
og Shift+Tab
) kan brukes til det samme.
Kommer du inn på et delkapittel for første gang, må du trykke
Tab
flere ganger før du kommer ned i selve dokumentet. Antall trykk avhenger av
hvilken web-leser du bruker. Prøv Tab
og Shift+Tab
i
Delkapittel 1.1.
• Navigering ut av et delkapittel
Hvis du, etter å ha klikket deg frem og tilbake en stund, står langt nede i et delkapittel
og ønsker å komme deg ut, er det selvfølgelig mulig å bruke tilbake
(back)
diverse ganger. Men det er en enklere måte. Bruk først hjem
-tasten (tasten Home
øverst på tastaturet)
til å flytte markøren øverst på web-siden. Ta Delkapittel 1.3
som eksempel. Det har flg. «heading»:
Flytter du markøren til deloverskriften Kapittel 1
, vil du se at den er klikkbar. Et
klikk bringer deg ut til innholdslisten for Kapittel 1. Flytter du
markøren lenger til høyre til Delkapittel 1.3
, vil du se at også den
er klikkbar. Derfra kommer du til innholdslisten for Delkapittel 1.3. Til slutt vil et klikk på
overskriften Algoritmer og datastrukturer
bringe deg helt ut til kompendiets innholdsliste. Prøv dette! Det virker på figuren over.
Hvis du er inne på innholdslisten til et kapittel, kan du på samme måte som over, komme ut til kompendiets
innholdsliste ved å klikke på overskriften Algoritmer og datastrukturer
. Prøv det
«headingen» for Kapittel 1:
• Navigering mellom kapitler, delkapitler og avsnitt
Hele kompendiet ligger under mappen ... /appolonius/
med kapitlene som undermapper. Strukturen
er slik:
... /appolonius/ // mappe for hele kompendiet ... /appolonius/kap1/ // mappe for Kapittel 1 ... /appolonius/kap1/1/ // mappe for Delkapittel 1.1
Html-filen som inneholder Delkapittel 1.1, ligger under den tilhørende mappen (se over) og vil ha adressen (url) . . /appolonius/kap1/1/kap11.html . En kan også komme direkte til et bestemt avsnitt i et delkapittel. Ta for eksempel avsnitt 5 i Delkapittel 1.1. Det vil ligge under følgende adresse (url) . . /appolonius/kap1/1/kap11.html#1.1.5 . Det blir på samme måte for alle de andre kapitlene. Ta for eksempel avsnitt 5 i Delkapittel 5.2. Det avsnittet vil ha følgende adresse (url) . . /appolonius/kap5/2/kap12.html#5.2.5 . Dette betyr at en kan hoppe direkte til et delkapittel eller til et avsnitt i et delkapittel ved å endre på en adresse i webleserens adressefelt.
• Alternative stiler
I kompendiet er Verdana primærfont.
Dette er en «san serif»-font. Noen synes det er lettere å lese hvis
det er en «serif»-font. Det betyr at bokstavene har små «føtter»
og «armer». Det er lagt ut en alternativ stilmal der fonten
Georgia brukes. Men det kan nok være litt
vanskelig å finne ut hvordan en kan endre stilmal. Det er avhengig av hvilken web-leser du bruker.
• Trykkfeil
Det vil helt sikkert forekomme trykkfeil, rare setninger, ord som mangler, feil eller mangler
i forklaringer, feil på tegninger og kanskje også enkelte feil i java-koden. Hvis du finner noe av dette, ville
det være fint om du rapporterte det til forfatteren. Send for eksempel en epost til