Data Types | |
| type | t_mof_filament_combination |
| Structure used to create filaments from the best combination of connected component. More... | |
| type | t_mof_filament_list |
| Structure used to detect filaments. More... | |
Functions/Subroutines | |
| subroutine | mof_initialize_filament_list (filament_list, nb_filament) |
| Initialize the filament list. | |
| elemental subroutine | mof_finalize_filament_list (filament_list) |
| Finalize the filament list. | |
| subroutine | mof_initialize_filament_combination (filament_combination, nb_filament) |
| Initialize the filament combination structure. | |
| elemental subroutine | mof_finalize_filament_combination (filament_combination) |
| Finalize the filament combination structure. | |
| subroutine | mof_find_connected_components (filament_list) |
| Find the connected components among the polygon/polyherons. | |
| recursive subroutine | mof_depth_first_search (filament_list, i) |
| Depth-first search algorithm to find the connected components. | |
| subroutine | mof_find_best_filament_groups (combination) |
| Find the best filament group by testing all the possible combinations. | |
| recursive subroutine | mof_find_best_filament_groups_forward (combination, code, m, n, sigma) |
| Ruskey's algorithm forward routine. | |
| recursive subroutine | mof_find_best_filament_groups_backward (combination, code, m, n, sigma) |
| Ruskey's algorithm backward routine. | |
| subroutine | mof_compute_combination_cost (combination, code) |
| Compute the cost of the given combination. | |
| subroutine mod_mof_filaments::mof_compute_combination_cost | ( | type(t_mof_filament_combination), intent(inout) | combination, |
| integer, dimension(:), intent(in) | code ) |
Compute the cost of the given combination.
| recursive subroutine mod_mof_filaments::mof_depth_first_search | ( | type(t_mof_filament_list), intent(inout) | filament_list, |
| integer, intent(in) | i ) |
Depth-first search algorithm to find the connected components.
| elemental subroutine mod_mof_filaments::mof_finalize_filament_combination | ( | type(t_mof_filament_combination), intent(out) | filament_combination | ) |
Finalize the filament combination structure.
| elemental subroutine mod_mof_filaments::mof_finalize_filament_list | ( | type(t_mof_filament_list), intent(inout) | filament_list | ) |
Finalize the filament list.
| subroutine mod_mof_filaments::mof_find_best_filament_groups | ( | type(t_mof_filament_combination), intent(inout) | combination | ) |
Find the best filament group by testing all the possible combinations.
The filament problem consists in finding the best combination of n polygons/polyhedrons in m subsets.
items: {1, 2, 3, ... , n}
subsets: { S1 } { S2 } ... { Sm } m ≤ n
The Ruskey's algorithm is used to generate all the combinations of n items in m subsets. The combination that minimize a given cost function is kept.
This routine works with to other routines:
Frank Ruskey. Simple combinatorial Gray codes constructed by reversing sublists. International Symposium on Algorithms and Computation. Springer, Berlin, Heidelberg, 1993. pp. 201-208.
| recursive subroutine mod_mof_filaments::mof_find_best_filament_groups_backward | ( | type(t_mof_filament_combination), intent(inout) | combination, |
| integer, dimension(:), intent(inout) | code, | ||
| integer, intent(in) | m, | ||
| integer, intent(in) | n, | ||
| integer, intent(in) | sigma ) |
Ruskey's algorithm backward routine.
| recursive subroutine mod_mof_filaments::mof_find_best_filament_groups_forward | ( | type(t_mof_filament_combination), intent(inout) | combination, |
| integer, dimension(:), intent(inout) | code, | ||
| integer, intent(in) | m, | ||
| integer, intent(in) | n, | ||
| integer, intent(in) | sigma ) |
Ruskey's algorithm forward routine.
| subroutine mod_mof_filaments::mof_find_connected_components | ( | type(t_mof_filament_list), intent(inout) | filament_list | ) |
Find the connected components among the polygon/polyherons.
| subroutine mod_mof_filaments::mof_initialize_filament_combination | ( | type(t_mof_filament_combination), intent(out) | filament_combination, |
| integer, intent(in) | nb_filament ) |
Initialize the filament combination structure.
| subroutine mod_mof_filaments::mof_initialize_filament_list | ( | type(t_mof_filament_list), intent(out) | filament_list, |
| integer, intent(in) | nb_filament ) |
Initialize the filament list.