Git Product home page Git Product logo

hit-the-road's Introduction

Data-Strucutures

Homework for the Data Structures course @ ACS, UPB 2018

Hit-the-Road

Data inceperii temei: 18-03-2018 Data finalizarii temei: 04-05-2018

Problemele intampinate:

  • memory-leak-uri
  • erori de coding-style
  • timp lung de procesare a testelor foarte lungi

Algorithm

In rezolvarea task-urilor, am aplicat urmatoarele metode, folosind Graph.h si hashtable.h. Graph.h este un header in care este implementat graful generic. Acesta contine urmatoarele functii importante ale clasei Graph:

  • tipul grafului (orientat sau neorientat): Graph(int n, bool oriented);
  • adaugarea unei muchii: void addEdge(T i, T j);
  • verificarea daca este muchie: bool isEdge(T i, T j);
  • verificarea componentelor conexe: void connectedComponents();
  • parcurgerea DFS: void dfs(int n, std::vector& visited , std::vector &order);
  • retinerea celei mai scurte rute: std::stack minPath(T source, T dest);
  • parcurgerea BFS pentru obtinerea celui mai scurt drum: int minPath(T& source, std::vector& viz);
  • obtinerea vecinilor unui nod: std::vector<std::vector > get_neigh().

Header-ul hashtable.h ne ajuta in implementarea si utilizarea structurii de date hashtable(generica) pentru maparea numelor de orase cu un index, si invers. Acesta are urmatoarele functii:

  • void put(Tkey key, Tvalue value)=> adaugare

  • void remove(Tkey key)=> stergere

  • Tvalue get(Tkey key)=> obtinere

  • bool has_key(Tkey key)=> validitatea

  • void resize()=> redimensionare

  • int get_size()=> dimensiunea

  • int get_capacity() => capacitatea

  • float current_factor()=> elementul curent

    1. Cel mai aglomerat oras Am citit numarul de noduri si muchii, dupa care am creat cate un hash pentru codificare si decodificare. Am citit nodurile grafului si le-am codificat corespunzator. Am adaugat muchiile si am actualizat gradul interior al fiecarui nod. Dupa care am determinat nodul cu grad interior maxim pentru task 1.

    2. validitatea hartii rutiere Am apelat functia clasei Graph connectedComponents() pentru a determina numarul de componente conexe necesar task-ului 2. Daca este o singura componenta conexa, inseamna ca harta este valida si exista drum intre oricare doua orase. In caz contrar, harta este nevalida.

    3. pentru un anumit oras, care sunt orasele inaccesibile lui In acest caz, am aflat doar in cazul in care exista drum intre oricare doua orase cu ajutorul functiei connectedComponents(), afland care harta este valida.

    4. pentru o masina despre care se cunosc cantitatea initiala de combustibil, consumul acesteia si orasul in care se afla, trebuie sa determinati cea mai apropiata benzinarie in care poate alimenta (daca aceasta exista) Pentru acest task, am marcat benzinariile (nodurile in care se afla in graful nostru), am calculat distanta de la fiecare oras la cea mai apropiata benzinarie cu ajutorul BFS-ului al functiei membre clasei Graph: minPath(). Am afisat datele de iesire, calculand benzina ramasa.

    5. fiind date traseele unor autobuze intre diferite orase, sa se determine traseul frecventat de cei mai multi calatori: Dupa citirea datelor de intrare pentru task 5, am determinat ruta cu numarul maxim de calatori astfel: am determinat nodul de start si nodul de final al rutei cu numarul maxim de calatori (cele 2 maxime dintre nodurile cu cei mai multi calatori). Am reconstitui ruta ceruta cu ajutorul unui BFS din functa minPath() cu doi parametri. Am afisat orasele care apartin rutei dorite retinute intr-un vector de stringuri.

hit-the-road's People

Contributors

vladutmargineanu avatar

Watchers

James Cloos 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.