1 | static double ai_gc_scan_maxDistance_reached; |
2 | |
3 | static S ai_gc_scan(S root) { |
4 | ai_gc_clear(); |
5 | ai_startBuffering(); |
6 | Map<S, Double> distances; |
7 | try { |
8 | time "GC Scan" { |
9 | ai_postTriple(root, "has GC distance", "0"); |
10 | distances = litcimap(root, 0.0); |
11 | LinkedList<S> queue = litLinkedList(root); |
12 | S word; |
13 | while ping ((word = queue.poll()) != null) { |
14 | double d = distances.get(word); |
15 | for (WebNode node : indexedNodes(word)) { |
16 | for (WebRelation r : web_forwardRelations(node)) { |
17 | double dist = ai_gc_distanceFunction(web_text(r), true); |
18 | if (!isNaN(dist)) |
19 | ai_gc_scan_update(distances, queue, r.b, d+dist); |
20 | } |
21 | |
22 | for (WebRelation r : web_backwardRelations(node)) { |
23 | double dist = ai_gc_distanceFunction(web_text(r), false); |
24 | if (!isNaN(dist)) |
25 | ai_gc_scan_update(distances, queue, r.a, d+dist); |
26 | } |
27 | } |
28 | } |
29 | Collection<S> keys = keys(distances); |
30 | if (ai_inTestMode()) |
31 | keys = keysSortedByValueDesc(distances); |
32 | ai_gc_scan_maxDistance_reached = 0; |
33 | for (S key : keys) { |
34 | double d = distances.get(key); |
35 | if (d > ai_gc_scan_maxDistance_reached) ai_gc_scan_maxDistance_reached = d; |
36 | ai_postTriple(key, "has GC distance", formatDouble(d, 1)); |
37 | } |
38 | } |
39 | } finally { |
40 | ai_stopBuffering(); |
41 | } |
42 | |
43 | ret print(l(distances) + "/" + l(indexedTerms()) + " terms were reached in " + toS(lastTiming(), 1) + " s GC scan from " + quote(root) + ". Max distance: " + formatDouble(ai_gc_scan_maxDistance_reached, 1)); |
44 | } |
45 | |
46 | static void ai_gc_scan_update(Map<S, Double> distances, L<S> queue, WebNode n, double d) { |
47 | //S text = ai_shortenForIndex(web_text(n)); |
48 | S text = web_text(n); |
49 | Double od = distances.get(text); |
50 | if (od == null || d < od) { |
51 | distances.put(text, d); |
52 | queue.add(text); |
53 | } |
54 | } |
Began life as a copy of #1011796
download show line numbers debug dex old transpilations
Travelled to 13 computer(s): aoiabmzegqzx, bhatertpkbcr, cbybwowwnfue, cfunsshuasjs, gwrvuhgaqvyk, ishqpsrjomds, lpdgvwnxivlt, mqqgnosmbjvj, pyentgdyhuwx, pzhvpgtvlbxg, tslmcundralx, tvejysmllsmz, vouqrxazstgt
No comments. add comment
Snippet ID: | #1011799 |
Snippet name: | ai_gc_scan - TODO: order by smallest distance; then maybe we never overwrite any values? |
Eternal ID of this version: | #1011799/23 |
Text MD5: | 634dc0369ab9e99b608842b9c40b48a3 |
Author: | stefan |
Category: | javax / a.i. |
Type: | JavaX fragment (include) |
Public (visible to everyone): | Yes |
Archived (hidden from active list): | No |
Created/modified: | 2017-11-05 18:43:31 |
Source code size: | 1957 bytes / 54 lines |
Pitched / IR pitched: | No / No |
Views / Downloads: | 427 / 463 |
Version history: | 22 change(s) |
Referenced in: | [show references] |