Cserép Máté honlapja


Gyorslinkek: tartalom, navigáció.


Oktatás » ELTE » Térinformatikai algoritmusok » 2015/2016 ősz

Célkitűzés

A kurzus egyik célja azoknak az adatstruktúráknak és algoritmusoknak a megismertetésére a hallgatókkal, amelyek informatikában széles körben - így a térinformatikában egyaránt - alapvetőnek számítanak. A szemeszter második fele kitekintést nyújt a speciálisan a térinformatika területén alkalmazott eljárásokra és adatszerkezetekre.

Számonkérés és értékelés

A hallgatók a tárgyból vizsgajegyet szereznek.
A vizsgáztatás vegyes rendszerben történik: a rendes vizsgák írásbeliek, az utóvizsga szóbeli számonkéréssel kerül megvalósításra.

Vizsgaeredmények

A tartalom megtekintése autentikációhoz kötött. Hitelesítsd magad.

Tematika

  1. Elemi algoritmusok
  2. Alapvető adatszerkezetek és műveleteik
  3. Rendezések, műveletigény
  4. Fa adatstruktúrák
  5. Gráfok ábrázolási formái és bejárásai
  6. Gráfalgoritmusok I.: minimális költségű utak
  7. -
  8. Őszi szünet
  9. Gráfalgoritmusok II.: minimális költségű feszítőfák
  10. Térbeli indexelési eljárások
  11. Topológia, algoritmusok és adatszerkezetek
  12. -
  13. Geometriai eredetű algoritmusok
    • Konvex burok:
      Cormen, Leiserson, Rivest, Stein: Introduction to Algorithms, 33.3 fejezet
      Berg, Cheong, Kreveld, Overmars: Computational Geometry, 11. fejezet
    • 3D-s domborzat modellezés: digitális jegyzet, 5.1 fejezet
  14. Klaszterezés, osztályozás, szegmentálás algoritmusai

Vizsgatematika
Vizsga feladatsorok: 2015. december 21. , 2016. január 11.

Programozási feladatok

A kitűzött házi feladatok megoldása opcionális, de minden helyes megoldás +1 ponttal növeli az írásbeli vizsgán elért pontszámot. A feladatokat tetszőleges programozási nyelven meg lehet oldani.
A megoldásokat minden héten hétfő éjfélig lehet feltölteni a NEPTUN tanulmányi rendszerbe (Neptun Meet Street -> Feladatok).

7. beadandó feladat: Egy szerverfarm üzemeltető vállalkozás több európai nagyvárosban is rendelkezik központtal, amelyek összefüggő hálózatba vannak kapcsolva. Határozzunk meg egy körmentes topológiát a hálózatra, amely a teljes rendszer összköltségét is minimalizálja egyben (minimális feszítőfa)! A bemeneti adatokat a network.txt állomány tartalmazza. A fájl formátuma a következő:

  • Az első sor a szerverközpontok számát tartalmazza: N.
  • A következő N sor a szerverek telephelyeinek neveit adja meg.
  • Az ezt követő sor a kapcsolatok számát definiálja: E.
  • A következő E sor a kapcsolatok két végpontját és távolságukat adja meg. Az útvonalak irányítatlanok.

6. beadandó feladat: Implementáld Dijkstra minimális útkereső algoritmusát! Az eljárás szignatúrája lehet például az alábbi, ahol a costs a bementi csúcsmátrix a költségekkel (sorfolytonos reprezentáció), d és p tömbök az algoritmus kimenete:
public void dijkstra(double[] costs, double[] d, int[] p)
Az eljárás ettől eltérő szignatúrával és éllistás reprezentációval is implementálható.

5. beadandó feladat: Keressük meg a Budapestről repülővel legfeljebb 1 átszállással elérhető városokat! A városok és az útvonalak adatai a flights.txt adatfájlban adottak. A fájl formátuma a következő:

  • Az első sor a települések számát tartalmazza: N.
  • A következő N sor a városok neveit adja meg.
  • Az ezt követő sor az útvonalak számát definiálja: E.
  • A következő E sor az repülőjáratok két végpontját adja meg. Az útvonalak irányítatlanok.

Megoldás: BreadthFirstSearch.zip

4. beadandó feladat: Határozzuk meg egy bináris (kereső)fa magasságát. A bináris fához kiindulási példa implementáció a 4. előadás példakódjában található, ebben az esetben az elkészítendő művelet szignatúrája: public int BinarySearchTree::height().
Megoldás: TreeHeight.zip

3. beadandó feladat: Soroljuk fel a magyar megyéket kerületük szerint rendezetten! A megyék adatai az előző feladatokból már ismert hun_megye.txt segédfájlban adottak. A feladatot gyorsrendezéssel kell megvalósítani.
Megoldás: SortPerimeter.java

2. beadandó feladat: Határozzuk meg az N legnagyobb kerületű magyar megyét növekvő sorrendben! A megyék adatai az előző feladatból már ismert hun_megye.txt segédfájlban adottak. Az N értékét a standard (konzol) inputról kell beolvasni. A feladatot a hatékonyság érdekében a tanult adatszerkezetekkel, és nem a maximum keresés algoritmusának N-szeri ismétlésével kell megvalósítani.
Példa bemenet: 3
Példa kimenet:
3. Pest
2. Bács-Kiskun
1. Borsod-Abaúj-Zemplén
Megoldás: MultipleMaxPerimeter.java

1. beadandó feladat: Határozzuk meg melyik a legnagyobb kerületű magyar megye! A megyék adatai a hun_megye.txt segédfájlban adottak. A fájl formátuma a következő:

  • Minden sor 1 megye adatát tartalmazza.
  • A sorok első eleme a megye neve.
  • A sorok további elemei az adott megyét leíró poligon (x;y) koordinátapárjai, szóközzel elválasztva.
  • A poligon vonalláncok zártak.
  • A sorok elemeit szóközök választják el.

A fájlkezelési alapokra példa a FileInput.java állományban található.
Megoldás: MaxPerimeter.java

Irodalomjegyzék

Java tananyagok

  • J. Nyékyné Gaizler: Java 2 útikalauz programozóknak 5.0
  • B. Bates, K. Sierra: Head First Java / Agyhullám Java