Giter Site home page Giter Site logo

thm-ptas's Introduction

  • 👋 Hi, I’m @manuEbg

thm-ptas's People

Contributors

gsass1 avatar jfhn avatar manuebg avatar tflm91 avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

thm-ptas's Issues

Unit test folder

We need a unit test folder to clean up the main function and still be able to verify that our code works.

Positions for Nodes

Use NetworkX Node Positions to position the nodes in the webview.

Export Positions to json and use them to display the graph

Use reductions in configurations

There are some reductions implemented for the input graph, but they are not used in the PTAS/Exhaustive Config. Therefore they should be build in.

Parallelization

  • parallelize each $k$
  • parallelize each Donut
  • parallelize NICE-TreeDecomposition ( quatsch )

PTAS - MIS - Implementation

struct PTASConfig {
    k : int, 
    exact_donut_tree_decomposition : bool,
    reduce_input : Vec<Reduction>,
    reduce_donuts : Vec<Reduction>,
}

enum Reduction {
    Twin,
    IsolatedClique,
    NodalFold
}

enum Scheme{
    PTAS { config : PTASConfig },
    Exhaustive { reduce_input : Vec<Reduction> }, 
}

struct MISResult {
    timings : Vec<(String, todo_TIME)>,
    total_time : todo_TIME,
    result : Vec<VertexId>,
}

fn find_max_independent_set(graph: DCEL, config: Scheme) -> Result<MISResult, Error>

fn compare_solutions(r1 : MISResult, r2 : MISResult) // print some stuff

Build Faces for DCEL

After reading the Planar Embedding generated in #2, we need to find the faces of the graph and fill the DCEL structure.

Adjacency Matrix

To quickly check wether a given set is independent we need an adjacency Matrix.

Cut Graph in Donuts

Dcel::find_donuts(&self, k: usize) -> Vec<SubDcel>  ...
struct SubDcel {
   sub: Dcel,
   parent: &Dcel,
   mapping: ???
}

SubDcel :
Dcel + Mapping to ParentDcel

Reduce Donuts

We need:

  • a method to convert a DcelBuilder to a QuickGraph

BFS on DCEL

To cut the graph into multiple rings, we need an implementation of the BFS algorithm for our DCEL.
The spanning tree built by this BFS is also necessary to compute tree decompositions (#7) for each ring.

  • Implement Algorithm
  • Visualize Spanning trees

Reduce input graph

To solve the Maximum Independent Set problem efficiently it may be useful to reduce the input graph.
In chapter 4 of this master thesis we may find further information.

General TODO-List

Implementierung des Algorithmus

  1. Datenstruktur für planare Graphen (Embedding)
  2. Planare Graphen generieren
    • visualisieren
  3. Graph in Donuts unterteilen
    • visualisieren
    • make each ring maximal planar
    • Fake-Root
  4. Für jeden Donut eine Nice Baumzerlegung erstellen
    • Approximation, Heuristik oder Library für perfekte Zerlegung
    • visualisieren
  5. Für jede Baumzerlegung muss das Maximum Indepentend Set gefunden werden
  6. Lösungen der Independent Sets müssen miteinander kombiniert werden

Testen des Algorithmus

  • Vergleich mit optimaler Lösung, Heuristiken oder anderen Approximationen
  • Laufzeittests durchführen

Referenzen

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.