Skip to content

A Java implementation of Weighted hypertree decompositions equipped with user defined cost functions

Notifications You must be signed in to change notification settings

fras3c/CostKdecomp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CostKdecomp

An optimal cost-based algorithm (cost-k-decomp) for optimal hypertree decompositions inspired by https://dl.acm.org/doi/10.1145/1055558.1055587

Please note that I've developed a simple python script (please check my github repos) which wraps the main algorithm to allow for an easier usage. By default this script computes and optimal hypertree decomposition using a structural cost function, that is, it exploits only information about the hypergraph representation.

However, for those situations where we have further information at hand on the given problem, for instance consider concrete contexts like database query answering where we can use statistics such as the size of relations, the selectivity of attributes, indexes, etc., we have built a custom cost (or weighting) function which is able to exploit such statistics in the computation of the Hypertree Decomposition which will improve the runtimes of join algorithms. This cost function is called GLSFunction.

The nice thing here is that everyone can contribute to this project by building a new cost function which will be "automatically" loaded in the framework by using Java Reflection.

For details about how those cost functions work and for insight on how to build them please have a look at Section 4.5 of my PhD thesis https://scholar.google.it/citations?view_op=view_citation&hl=it&user=icnAjqQAAAAJ&citation_for_view=icnAjqQAAAAJ:Y0pCki6q_DkC

If there is enough interest in this tool we may consider to add new contributions.

About

A Java implementation of Weighted hypertree decompositions equipped with user defined cost functions

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages