feat: switch to obvious-dijkstra
This commit is contained in:
parent
4fa95ff78a
commit
2ffc92fa91
|
@ -5,12 +5,7 @@
|
||||||
</component>
|
</component>
|
||||||
<component name="ChangeListManager">
|
<component name="ChangeListManager">
|
||||||
<list default="true" id="3c7078e7-6f30-4d92-9696-11496f9e6dff" name="Changes" comment="">
|
<list default="true" id="3c7078e7-6f30-4d92-9696-11496f9e6dff" name="Changes" comment="">
|
||||||
<change afterPath="$PROJECT_DIR$/tools/Misc.js" afterDir="false" />
|
|
||||||
<change afterPath="$PROJECT_DIR$/tools/PathBench.js" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/api/click.js" beforeDir="false" afterPath="$PROJECT_DIR$/api/click.js" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/api/click.js" beforeDir="false" afterPath="$PROJECT_DIR$/api/click.js" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/tools/Debug.js" beforeDir="false" afterPath="$PROJECT_DIR$/tools/Debug.js" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/tools/ShortestPath.js" beforeDir="false" afterPath="$PROJECT_DIR$/tools/ShortestPath.js" afterDir="false" />
|
|
||||||
</list>
|
</list>
|
||||||
<option name="SHOW_DIALOG" value="false" />
|
<option name="SHOW_DIALOG" value="false" />
|
||||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||||
|
@ -93,7 +88,7 @@
|
||||||
<workItem from="1702448962541" duration="5620000" />
|
<workItem from="1702448962541" duration="5620000" />
|
||||||
<workItem from="1703419885970" duration="13073000" />
|
<workItem from="1703419885970" duration="13073000" />
|
||||||
<workItem from="1703582457934" duration="210000" />
|
<workItem from="1703582457934" duration="210000" />
|
||||||
<workItem from="1703642799206" duration="15845000" />
|
<workItem from="1703642799206" duration="16158000" />
|
||||||
</task>
|
</task>
|
||||||
<servers />
|
<servers />
|
||||||
</component>
|
</component>
|
||||||
|
|
12
api/click.js
12
api/click.js
|
@ -3,7 +3,7 @@ import {sill, sill_unwrap, noexcept} from "../tools/Debug";
|
||||||
import {get_row} from "../tools/Misc";
|
import {get_row} from "../tools/Misc";
|
||||||
import benchmark from "../tools/PathBench";
|
import benchmark from "../tools/PathBench";
|
||||||
|
|
||||||
const __spa = benchmark;
|
const __spa = obvious_dijkstra;
|
||||||
|
|
||||||
function find_nearest_node_id(nodes, point) {
|
function find_nearest_node_id(nodes, point) {
|
||||||
const [lat, lon] = point;
|
const [lat, lon] = point;
|
||||||
|
@ -45,22 +45,22 @@ const shortest_path = noexcept((nodes, ways, start_point, end_point) => {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sill_unwrap(aff);
|
// sill_unwrap(aff);
|
||||||
const actual_start_node_id = find_nearest_node_id(clean_nodes, start_point);
|
const actual_start_node_id = find_nearest_node_id(clean_nodes, start_point);
|
||||||
const actual_end_node_id = find_nearest_node_id(clean_nodes, end_point);
|
const actual_end_node_id = find_nearest_node_id(clean_nodes, end_point);
|
||||||
sill_unwrap(typeof (actual_start_node_id));
|
// sill_unwrap(typeof (actual_start_node_id));
|
||||||
// sill(count);
|
// sill(count);
|
||||||
const ch_dict = {};
|
const ch_dict = {};
|
||||||
let f = 1;
|
let f = 1;
|
||||||
for (const t in ways) {
|
for (const t in ways) {
|
||||||
if (t === ways[aff[actual_start_node_id]]) sill('yes');
|
// if (t === ways[aff[actual_start_node_id]]) sill('yes');
|
||||||
const [l, n] = get_row(ways, t);
|
const [l, n] = get_row(ways, t);
|
||||||
let prev = '';
|
let prev = '';
|
||||||
for (let i = 0; i < n; ++i) {
|
for (let i = 0; i < n; ++i) {
|
||||||
const curr = l[i].toString();
|
const curr = l[i].toString();
|
||||||
// if(true) {
|
// if(true) {
|
||||||
if (count[curr] > 1 || curr === actual_end_node_id || curr === actual_start_node_id) {
|
if (count[curr] > 1 || curr === actual_end_node_id || curr === actual_start_node_id) {
|
||||||
if (curr === actual_start_node_id) sill(curr === actual_start_node_id);
|
// if (curr === actual_start_node_id) sill(curr === actual_start_node_id);
|
||||||
if (prev !== '') {
|
if (prev !== '') {
|
||||||
if (ch_dict[curr]) {
|
if (ch_dict[curr]) {
|
||||||
ch_dict[curr].push(prev);
|
ch_dict[curr].push(prev);
|
||||||
|
@ -84,7 +84,7 @@ const shortest_path = noexcept((nodes, ways, start_point, end_point) => {
|
||||||
sill(`start distance: ${haversine_distance(nodes[actual_start_node_id], start_point)}`);
|
sill(`start distance: ${haversine_distance(nodes[actual_start_node_id], start_point)}`);
|
||||||
sill(`dest distance: ${haversine_distance(nodes[actual_end_node_id], end_point)}`);
|
sill(`dest distance: ${haversine_distance(nodes[actual_end_node_id], end_point)}`);
|
||||||
sill("calling __spa...");
|
sill("calling __spa...");
|
||||||
const seq = __spa(nodes, clean_nodes, ways, ch_dict, count, aff, actual_start_node_id, actual_end_node_id);
|
const seq = __spa(clean_nodes, ways, ch_dict, count, aff, actual_start_node_id, actual_end_node_id);
|
||||||
const res = [end_point];
|
const res = [end_point];
|
||||||
seq.forEach((node_id) => {
|
seq.forEach((node_id) => {
|
||||||
if (clean_nodes[node_id]) res.push(clean_nodes[node_id]);
|
if (clean_nodes[node_id]) res.push(clean_nodes[node_id]);
|
||||||
|
|
Loading…
Reference in New Issue