Praktikumi lesanded
This presentation is the property of its rightful owner.
Sponsored Links
1 / 15

Praktikumiülesanded PowerPoint PPT Presentation


  • 91 Views
  • Uploaded on
  • Presentation posted in: General

Praktikumiülesanded. Aines Algoritmid ja andmestruktuurid. Praktikumiülesanne 1. Tähtaeg: 15.09.08. Realiseerida Shelli meetod arvujärjendi sorteerimiseks. Modifitseerida programm Keerukus.java d emonstreerimaks graafikuna selle meetodi

Download Presentation

Praktikumiülesanded

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Praktikumi lesanded

Praktikumiülesanded

Aines

Algoritmid ja andmestruktuurid


Praktikumi lesanded

Praktikumiülesanne 1

Tähtaeg: 15.09.08

Realiseerida Shelli meetod arvujärjendi sorteerimiseks.

Modifitseerida programm Keerukus.java demonstreerimaks graafikuna selle meetodi

keerukust, võrdluses sorteerimise piste- ja standardmeetodiga Arrays.sort.

Märkus.

Programmis tuleb (kommentaarina) esitada viit allikale, kust on leitud Shelli meetodi

programm või algoritm.


Praktikumi lesanded

Praktikumiülesanne 2

Tähtaeg: 22.09.08

Igas ülesandes [2}-§1 6, 7, 8, 9a esinevad kaks funktsiooni.

Tähistame neid vastavalt f(n) ja g(n).

Modifitseerida programm Keerukus.java selliselt (iga ülesande jaoks eraldi),

et ekraanil kujutataks neli graafikut:

funktsiooni f graafik

funktsiooni g graafik

funktsiooni f/g graafik

funktsiooni g/f graafik

Mida saab järeldada sellest, et funktsioon f/g on (paistab olevat) tõkestatud?

Mida saab järeldada sellest, et funktsioon g/f on (paistab olevat) samuti tõkestatud?

Märkus.

Funktsioonide f ja g graafikute paremaks ekraanile manamiseks võib neid korrutada

sobiva konstandiga. Keerukuse uurimise kontekstis ei muuda see midagi.


Praktikumi lesanded

Praktikumiülesanne 3

Tähtaeg: 29.09.08

3.1. Realiseerida loendamismeetod Javas:

static void loendSort(int[] a, int k){

// Antud: järjend a,

// mille elemendid on mittenegatiivsed ja väiksemad kui k

// Tulemus: a sorteeritud mittekahanevalt

}

Testiotstarbelises peameetodis kontrollida, et see meetod töötab õigesti, kui

a on suvaline (pikkusega mõniteist),

a on juba järjestatud mittekahanevalt,

a on järjestatud mittekasvavalt,

a on kaheelemendiline,

a on üheelemendiline.

3.2 Kirjutada arvujärjendi sorteerimise meetod kombinSort(int[] a), mis

võimaluse korral rakendab loendamismeetodit loendSort;

kui see ei ole aga võimalik, siis rakendab süsteemset meetodit Arrays.sort.

Demonstreerida selle meetodi ajalise keerukuse graafikut võrdluses pistemeetodi

ja süsteemse meetodiga Arrays.sort, kui järjendite elemendid on juhuarvud

a) vahemikus 0 .. 1000, b) vahemikus 0 .. 10000, c) vahemikus 0 .. 100000.


Praktikumi lesanded

Praktikumiülesanne 4

Tähtaeg: 06.10.08

Olgu graafi kujutusviis ja manipuleerimismeetodid määratud nii, nagu abipaketis

ee.ut.kiho.aa.graaf

Märkus 1. Laadige abipaketi viimane versioon aadressilt

http://www.cs.ut.ee/~kiho/ads/fall08/abipakett/

Märkus 2. Avaldistes

Graaf.sisestadaTabelist(fnimi)

g.väljastadaTabelina(fnimi)

new GraafiJoonistaja(fnimi)

on fnimi kas faili(tee) täisnimi või faili lihtnimi (ei sisalda eraldajat \ või /).

Viimasel juhul täiendatakse automaatselt lihtnimi täisnimeks, lisades ette jooksva kaustatee.

4.1. Koostada Java meetod, mis teisendab antud graafi G = (V, E) orienteerimata graafiks:

kui ja , siis lisatakse (sama nimega) kaar .

4.2. Koostada Java meetod graafi tippude topoloogilise järjestuse leidmiseks algoritmi

[1]-joonis 6.2 järgi.

4.3. Realiseerida Java meetodina eeldusgraafi analüüsimise algoritm [1]-joonis 6.4.

Märkus. Algoritmis [1]-joonis 6.4 on eksitavad ja ülearused tulemuse kirjelduse kaks viimast rida:

--- kui tipp v ei ole …

--- siis v.d …

Ülesannete 4.2 ja 4.3 lahendused saata ühe Java-programmina (manuses) aadressil [email protected]


Praktikumi lesanded

Praktikumiülesanne 5

Tähtaeg: 13.10.08

5.1. Koostada Java meetod, mis antud graafi ja selle kahe tipu a ning b korral

leiab ja väljastab kõik teed tipust a tippu b.

Vt ka http://www.cs.ut.ee/~kiho/ads/fall08/demo/ … programm YksTee.algjava.

5.2. Realiseerida Java-meetodina Dijkstra algoritm lühimate teede leidmiseks

([1]-joonis 6.6).

Vt ka http://www.cs.ut.ee/~kiho/ads/fall08/demo/ … programm Otseteed.algjava


Praktikumi lesanded

Praktikumiülesanne 5.2

Juhiseid lahendamiseks

  • Ettevalmistus (Dijkstra meetodi testimiseks).

  • Tehke graaf (nt fail graafKaaremargenditega.txt),

  • kus kaaremärgendiks on kaare pikkus (sõne kujul), nt

    • 1) [30;30] 1 --> 2 2 --> 6

    • 2) [70;70] 4 --> 3 5 --> 4

    • 3) [123;131] 1 --> 5

    • 4) [57;156] 1 --> 5

    • 5) [165;208] 13 --> 10 1 --> 7

    • 6) [176;79] 11 --> 9

    • 7) [246;173] 1 --> 6 1 --> 10

    • 8) [414;167] 1 --> 7 10 --> 12

    • 9) [350;112] 1 --> 11 1 --> 8

    • 10) [354;279] 1 --> 12

    • 11) [401;46]

    • 12) [533;282]

    • Graafi tabel-esituses paikneb kaaremärgend vastava noole ees. Seega nt

    • 2) [70;70] 4 --> 3 5 --> 4

    • Tähendab, et tipust nr 2 väljub kaks kaart:

    • märgendiga “4” tippu nr 3 ja märgendiga “5” tippu nr 4.


Praktikumi lesanded

Praktikumiülesanne 5.2

Juhiseid lahendamiseks

  • b) Lühima tee leidmine kõigi teede leidmise programmi abil.

  • Muutke programmis 5.1 tee väljastamise meetodit selliselt, et väljastataks ka väljastatava tee pikkus (teel olevate kaarte pikkuste summa), nt

    • Leitud teed on:

    • pikkus = 20 1 2 3 5 10 12

    • pikkus = 30 1 2 3 5 7 6 9 8 12

    • pikkus = 9 1 2 3 5 7 10 12

    • pikkus = 21 1 2 4 5 10 12

    • pikkus = 31 1 2 4 5 7 6 9 8 12

    • pikkus = 10 1 2 4 5 7 10 12

    • pikkus = 17 1 6 9 8 7 10 12

    • pikkus = 24 1 6 9 8 12

    • Tulemusest nähtub, et lühimaks on tee pikkusega 9:1 2 3 5 7 10 12

    • Sama tulemuse peab andma hiljem koostatav ja silutav Dijkstra meetod.


Praktikumi lesanded

Praktikumiülesanne 5.2

Juhiseid lahendamiseks

c) Enne Dijkstra algoritmi programmeerimist lahendage küsimus, mil viisil hoida

tippude hulka Q ja kuidas sellest võtta välja tipp, mille väli .d on parajasti kõige

väiksema väärtusega.

Näiteks (sobib küll esialgu, kuid pole parim võimalus):

Vector <Tipp> q = new Vector <Tipp> (); // hulk Q

Meetod:

static Tipp võttaVähim(Vector <Tipp> q)

{

// Antud: vektorist q võetakse välja tipp. mille väli .d on minimaalne

// Tulemus: tagastatakse välja võetud tipp

}


Praktikumi lesanded

Praktikumiülesanne 5.2

Juhiseid lahendamiseks

II.

5.2 lahenduse

ligikaudne

üldskeem

import ee.ut.kiho.aa.graaf.*;

import java.util.*; // Vector

class Main {

public static void main(String[] args){

String antud = "graafKaaremargenditega.txt";

String tulem = "graafTeedTulem.txt";

new GraafiJoonistaja(antud);

Graaf g = Graaf.sisestadaTabelist(antud);

int n = g.n(); // tippude arv

for( int i = 0; i <= n -1; i++ )

{

g.tipp(i).seadaVäli("eellane", "-");

}

dijkstra(g, g.tipp(0));

väljastadaTee(g, g.tipp(n-1));

g.väljastadaTabelina(tulem);

new GraafiJoonistaja(tulem);

}

static void dijkstra(Graaf g, Tipp a)

{

..

Vector <Tipp> q = new Vector <Tipp> (); // Q

int n = g.n();

for( int i = 1; i <= n-1; i++ )

{

Tipp v = g.tipp(i);

v.seadaVäli("d", "999999");//lõpmatus

}

a.seadaVäli("d", "0");

q.add(a); // q <== a

...

}

static Tipp võttaVähim(Vector <Tipp> q)

{

// Antud: vektorist q võetakse välja tipp. mille d on minimaalne

// Tulemus: tagatatakse välja võetud tipp

Tipp tulem = null;

...

q.remove(tulem);

return tulem;

}

static void väljastadaTee(Graaf g, Tipp lõpp)

{

...

}

}


Praktikumi lesanded

Praktikumiülesanne 6

Tähtaeg: 20.10.08

6.1. Realiseerida Java meetoditena kahendpuu läbimise algoritmid ([1]-joonis 2.1).

Töötlemisprotseduuriks P olgu tipu märgendi väljastamine konsoolile.

6.2. Koostada ja siluda kahendpuule vastava puu konstrueerimise meetod.

Võib eeldada, et antud kahendpuu juurel on ainult vasak alluv.

Vt ka ([1]-lk 28 ja

http://www.cs.ut.ee/~kiho/ads/fall08/demo/ … programm PuuKahendpuuks.algjava

Märkus. Eelnevalt laadida abipaketi viimane versioon aadressilt

http://www.cs.ut.ee/~kiho/ads/fall08/abipakett/


Praktikumi lesanded

Praktikumiülesanne 7

Antakse individuaalülesandena pärast seda, .kui on arvestatud praktikumiülesanne 5.

Tähtaeg: lahendus esitada kahe nädala jooksul pärast individuaalülesande kättesaamist.


Praktikumi lesanded

Praktikumiülesanne 8

Tähtaeg: 10.11.08

Realiseerida kahendotsimise puu klass ja vastav testklass

aadressil http://www.cs.ut.ee/~kiho/ads/fall08/demo/PrYl8/

leiduvate skeemide Kop ja Main kohaselt.

Vt ka [1]-lk 28-33.

Märkus. Eelnevalt laadida abipaketi viimane versioon aadressilt

http://www.cs.ut.ee/~kiho/ads/fall08/abipakett/

Alamülesanded lahendada järjekorras:

8.1. Lõpetada ja siluda meetod

private void lisada(Tipp t, int r)

(Testimistegevused on juba lisatud peaklassi Main skeemi.)

8.2. Lõpetada ja siluda meetod

private Tipp otsida(Tipp t, int k)

Peaklassi Main lisada vajalikud testimistegevused.


Praktikumi lesanded

Praktikumiülesanne 8

Alamülesanded

8.3. Lõpetada ja siluda meetodid

private void eemaldada(Tipp t, int k)

private String eemaldadaJärglane(Tipp p)

Peaklassi Main lisada vajalikud testimistegevused.

8.4. Lõpetada ja siluda teine konstruktor

public Kop(int[] a, boolean kesk)

ja selles rakendatav meetod

private void lisadaKeskelt(int[] a, int i, int j)

Peaklassi Main lisada vajalikud testimistegevused.

8.5. Lõpetada (tasakaalustamisel rakendatav) meetod

private int lisadaMassiivi(Tipp t, int[] a, int i)

ja testida meetod

public void tasakaalustada()

Peaklassi Main lisada vajalikud testimistegevused.

Praktikumiülesande 8 lahendus – kaks programmi, klass Kop ja peaklass,

saata aadressil [email protected]


  • Login