Skip to content

RemiBe/crack

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Author: Remi Barat
Last update: 08/01/2018


# Introduction: What is Crack?

Crack is a graph partitioning framework. Graph partitioning is an
NP-Hard problem which has numerous applications. Basically, given
a graph whose vertices and edges are weighted, we search for a
partition that
- balances the weights of the parts and
- minimizes the sum of the weights of the edges cut by the partition.
Applications of this problem include partitioning electronic
components on a chip for VLSI circuit design, or load balancing of
numerical simulation.

Crack aims at providing to those interested in designing graph
partitioning heuristics a means to easily:
- Implement new heuristics
- Study the behavior of a heuristic, through:
    - The possibility to print data throughout the algorithm execution
    - The possibility to plot partitions obtained at different steps
      of the algorithm
- Benchmark heuristics
    - Algorithms only need to be specified, Crack runs them
    - Various analysis can be performed on the data

Crack prioritizes:
1. Flexibility
2. Simplicity
3. Efficiency

For those who want to play with graphs and discover graph partitioning:
- Pictures are provided in the crack/example/images/ folder
- A list of references can be found in the crack/docs/refs.txt file
- A list of ideas that may be worth tested can be found in the
  crack/docs/ideas.txt file
If your discoveries are worth it, try publishing them in a conference or
a scientific paper, and don't forget to cite Crack while doing it!

Now it is time to jump to the crack/docs/dev_guide.txt file to
understand how to use Crack and implement new algorithms!

# FAQ

1. Why the name Crack?

Crack is like a split, so it suits a graph partitioning tool.
Moreover, to have a crack means to try, which is why you may
use Crack (because more efficient partitioning tools exists!):
to design your own algorithms.

2. What will I gain from contributing?

Graph partitioning is a fascinating and complex problem, with
numerous applications. Addressing this problem alone leads to
the current state: a few people design algorithms, have a lot
of ideas but little time to investigate them. With Crack, anyone
can investigate ideas from everyone, thus helping everyone to
gain knowledge on how a graph partitioning tool should behave.

So, what you can gain from participating is:
* fame and acknowledgements from your peers
* valuable knowledge on heuristics that address an NP-Hard problem
* practise your Python skills on a real and challenging problem
* get contacts from other people (and at least, me =)
  by discussing each other ideas and results.

3. How can I contribute?

Read the docs/TODO, implement your own ideas, spread the word
about Crack, or send me an email at remibarat@yahoo.fr.


About

An open-source flexible graph partitioning tool

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages