store_analyze_combos() — benchmarks showed GPU (Vulkan via ggmlR) is ~24x slower than CPU (C++) for this workload. ggmlR remains as optional dependency for other use cases.short_path_bfs.cpp — short_path_bfs() rewritten entirely in C++ with depth-limited BFS and multi-index lookup, replacing the previous R implementation for significantly better performance.sort_by parameter now properly documented in find_best_random_combinations() and find_path_iterative()find_path_iterative() now uses C++ StateStore backend instead of data.frame lists — memory usage is linear instead of quadraticanalyze_top_combinations() still works but the new store_analyze_combos() writes directly to C++ store without intermediate data.framesC++ StateStore — compact hash-indexed state storage (src/state_store.h, src/state_store.cpp):
vector<int> for states, separate metadata vectors, unordered_map hash indexint (1/2/3) instead of strings for cache efficiencystate_store_find_intersections() — O(min(N,M)) set intersection via hashstate_store_find_best_match() — Manhattan distance on flat arraystate_store_filter_middle() — skip first/last steps per combostate_store_reconstruct_path() — full C++ path reconstructionstate_store_to_dataframe() — convert to data.frame for debuggingstore_analyze_combos() — C++ cycle expansion writing directly to StateStore, bypassing all R-level list/data.frame creation
sort_by parameter for find_best_random_combinations():
"longest", "shortest", "most_unique", "least_unique", "most_repeated", "least_repeated"c("shortest", "most_unique")repetition_ratio column in outputsort_by parameter propagated to find_path_iterative()Bridge state output — find_path_iterative() and find_path_bfs() now print bridge state chains with 1-based numbering and labels
Direct vs hub distance check in find_path_bfs() — compares Manhattan distance start<->final vs hub_s<->hub_f, skips BFS hubs when direct is closer
CelestialCoords struct extracted to shared header (celestial_coords.h) for reuse across C++ filesfind_path_bfs() now returns bridge_states_start and bridge_states_final in its result, including BFS hub statesarrow dependency — all functions now return plain data.frame instead of Arrow Tablesdata.table moved from Imports to Suggests — package works without it, uses data.table for speed when availablearrow dependency (~50+ MB)Rcpp is requiredcayley_gpu_available(), cayley_gpu_init(), cayley_gpu_status(), cayley_gpu_free() — GPU infrastructure with lazy initializationcalculate_differences(..., use_gpu = TRUE) — Manhattan distance on GPU (sub -> abs -> sum_rows)apply_operations_batch_gpu() — batch permutation operations via matrix multiplication on GPUmanhattan_distance_matrix_gpu() — pairwise N*M Manhattan distance matrix using 3D tensorssparse_bfs(), reconstruct_bfs_path() — sparse BFS with hybrid hub/random selectionfind_path_bfs() — find path via BFS highways + iterative connectorshort_path_bfs() — greedy BFS hopping to shorten existing pathsbidirectional_bfs() for shortest path between permutation statesfind_path_iterative() for finding paths via cycle expansionconvert_LRX_to_celestial(), calculate_angular_distance_z(), calculate_midpoint_z(), find_closest_to_coords() — map operation counts to spherical coordinatesanalyze_top_combinations() for full cycle analysis of top operation sequencesgenerate_state(), generate_unique_states_df(), select_unique(), check_duplicates(), save_bridge_states(), find_combination_in_states(), convert_digits()invert_path(), validate_and_simplify_path(), reconstruct_full_path()manhattan_distance(), breakpoint_distance(), short_position()shift_left_simple(), shift_right_simple(), reverse_prefix_simple()shift_left(), shift_right(), reverse_prefix()get_reachable_states(), get_reachable_states_light()find_best_random_combinations()