Datastrukturer & Algoritmer, Datalogi C

Henning Christiansen15/9-2001

 

Opgaver til forel¾sningen 17/9-2002

 

Der er ikke ¿velsesgang 17/9 (OB) og 20/9 (Bas), men brug opgaverne som hjemmearbejde og evt. pŒ ¿velserne senere.

 

Afleveringsopgave for DatC: Opgave 3 nedenfor; afleveringsfrist 1/10 (form og sted aftales med Lars)

 

Opgave 1

Bogens ÒbevisÓ for s¾tning 5.1 er mildest talt obskurt. Vis ved traditionelle induktionsbeviser f¿lgende:

1)      1 + 2 + ... + n  =  n(n+1)/2

2)      1 + (1+2) + (1+2+3) + ... + (1+2+...+n)  =  n(n+1)(n+2) / 6

 

Opgave 2

OmformulŽr bogens beskrivelser af W, Q og o (lille 0) vha. af gr¾nsev¾rdier analogt til den mŒde vi i forel¾sningen definerede O:

 

En funktion T(n) er O(F(n)) sŒfremt T(n)/F(N) ¨ konstant nŒr n¨°

 

Bogens opgave 5.7 (side 177) spg. a og b.

 

Opgave 3

Opgave handler om repr¾sentation af m¾ngder af tal ved et array udstyret med en t¾ller; vi skitserer det som en klasse sŒledes:

 

public class talm¾ngde{

  public inds¾t(int x) {... inds¾tter x i m¾ngden };

  public boolean med_i(int x) {... returnerer true hvis x med i m¾ngden, false ellers};

  private int [] indhold = new int [1000000];

  private int antal = 0;

}

 

Problemer hvis arrayet l¿ber fuldt skal ignoreres.

 

ImplementŽr klassen i to udgaver

1)      Tallene inds¾ttes i den r¾kkef¿lge de ankommer (dvs. svarende til r¾kkef¿lgen af kald af inds¾t); med_i metoden implementeres som sekventielt genneml¿b

2)      Indholdet af arrayet holdes til enhver tid sorteret. Dette opnŒs ved at inds¾t fungerer sŒledes:

a.        f¿rst ops¿ges index hvor det nye tal skal placeres (f.eks. ved bin¾r s¿gning)

b.       alle elementer til h¿jre herfor skubbes en position mod h¿jre, sŒ der bliver plads til det nye tal.

Metoden for med_i kan implementeres ved bin¾r s¿gning.

 

Angiv O for metoderne med_i og inds¾t for begge metoder; hvad siger det om, i hvilke situationer implementation 1 eller 2 er mest velegnede.