GithubHelp home page GithubHelp logo

belgradeunderground's Introduction

BelgradeUnderground

Nedelja Informatike u MG v2.0 - rešenje zadatka

Problem

Dat je json fajl sa podacima o linijama u gradskom prevozu (tj. bio je dat negde, ali ga u trenutku pisanja ovog readme-a ne mogu naći). Treba pronaći najbrži put između dve stanice koristeći linije gradskog prevoza.

Princip

Osnovni pojmovi: Line - predstavlja liniju prevoza i čuva stajališta na kojima ona staje Station - predstavlja jedno stajalište i čuva linkove do sledećih Station.Link - predstavlja link između dva stajališta, koristeći neku od linija.

Pretvaram JSON u improvizovani text-based format u kom čuvam više podataka, poput osnovne težine svakog linka pri prvom pokretanju (može da potraje). Pri svakom sledećem, učitavam podatke iz generisanog fajla i gradim model.

Osnovna težina linka najviše zavisi od udaljenosti, ali se i tip prevoza uzima u obzir (mislim da negde postoji flag kojim se to može isključiti, jer udaljenost ne mora nužno da bude relevantna). Kada se traži put, u obzir se uzima ugao između trenutne pozicije i cilja i trenutne pozicije i linka kao najveći indikator valjanosti puta. Heuristika nije optimalna, ali je uglavnom zadovoljavajuća.

Postoje dva metoda za pronalaženje puta, data.Paths i data.PathQueue, u kojima je objašnjeno kako funkcionišu. Kako nisam stigao da dovršim i počistim kod do roka, malo je haotično. Ukratko, Paths bira onaj link sa najmanjom cenom i pri svakom koraku računa efikasnost kao ukupna_cena/pravolinijsko_rastojanje, sve dok efikasnost ne ode ispod određenog praga, kada radi rollback na prethodnu najefikasniju putanju. Cena korišenja linka je određena udaljenošću i tipom prevoza i značajno se povećava ako je u pitanju presedanje. PathQueue je PriorityQueue na čijem je vrhu putanja sa najvećom efikasnošću, koja se pri svakoj iteraciji nastavlja linkom sa najmanjom cenom, i ovo se vrti sve dok se ne dođe do cilja.

Struktura

io.* - učitavanje, ispis fajlova

data.* - podaci i algoritmi

model.* - model podataka

License

MIT

belgradeunderground's People

Contributors

luka-j avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.