Giter Site home page Giter Site logo

edges's Introduction

edges

Instalação / Testes Execução:

  • $ git clone https://github.com/queirozfcom/edges.git

  • $ cd edges

  • $ sbt test // run tests

  • $ sbt run // run main class (takes a long time to process large files; use .par if you're on a multi-core machine)

Suposições

  • Eu assumi que as arestas indicadas pelo arquivo texto são do tipo "não-direcionadas", pois não havia qualquer indicação que elas fossem direcionadas.

Tradeoffs

  • Há um tradeoff entre complexidade em tempo de construção VS complexidade em tempo de consulta.

  • Depende se o caso de uso é de leitura frequente e escrita infrequente ou vice-versa.

  • Há também um tradeoff entre ler todos os dados para a memória ou ler o arquivo como um stream de linhas, cada uma representando uma aresta nova.

  • O caso de leitura como stream é mais escalável (o dataset não precisa caber todo em memória) porém mais complexo.

Eu optei por fazer do jeito mais simples, que é o suficiente para o caso em questão (carregar os dados em memória e deixar a computação para o tempo de consulta).

Estrutura

  • Eu representei cada aresta não direcionada como duas arestas direcionadas (uma em cada direção), para deixar minha lógica mais simples.

  • O comportamento foi quebrado em partes para facilitar a composição e a testagem do mesmo.

  • Os testes incluem casos simples e casos que eu considero limítrofes como arestas que induzem ciclos no grafo.

  • A chamada recursiva não é tail-recursive, mas pode ser que dê para otimizá-la assim.

  • Certamente há muito espaço para otimização e melhoria da eficiência do código, se for necessário.

edges's People

Contributors

queirozfcom avatar

Watchers

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