Fix inconsistency in day 23.

It works way better when you choose an optimal pivot.
This commit is contained in:
2018-12-25 13:32:08 +01:00
parent ff36f15ae1
commit c05b486033
3 changed files with 29 additions and 28 deletions

View File

@@ -74,10 +74,11 @@ day_bench!(day19, 19);
day_bench!(day20, 20);
day_bench!(day21, 21);
day_bench!(day22, 22);
day_bench!(day23, 23);
day_bench!(day25, 25);
benchmark_main!(day01, day02, day03, day04, day05,
day06, day07, day08, day09, day10,
day11, day12, day13, day14, day15,
day16, day17, day18, day19, day20,
day21, day22, day25);
day21, day22, day23, day25);

View File

@@ -32,10 +32,10 @@ z
<defs>
<path d="M 0 0
L 0 3.5
" id="m15357625e1" style="stroke:#000000;stroke-width:0.8;"/>
" id="mc20af521f5" style="stroke:#000000;stroke-width:0.8;"/>
</defs>
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="60.305455" xlink:href="#m15357625e1" y="307.584"/>
<use style="stroke:#000000;stroke-width:0.8;" x="60.305455" xlink:href="#mc20af521f5" y="307.584"/>
</g>
</g>
<g id="text_1">
@@ -71,7 +71,7 @@ z
<g id="xtick_2">
<g id="line2d_2">
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="127.941818" xlink:href="#m15357625e1" y="307.584"/>
<use style="stroke:#000000;stroke-width:0.8;" x="127.941818" xlink:href="#mc20af521f5" y="307.584"/>
</g>
</g>
<g id="text_2">
@@ -110,7 +110,7 @@ z
<g id="xtick_3">
<g id="line2d_3">
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="195.578182" xlink:href="#m15357625e1" y="307.584"/>
<use style="stroke:#000000;stroke-width:0.8;" x="195.578182" xlink:href="#mc20af521f5" y="307.584"/>
</g>
</g>
<g id="text_3">
@@ -139,7 +139,7 @@ z
<g id="xtick_4">
<g id="line2d_4">
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="263.214545" xlink:href="#m15357625e1" y="307.584"/>
<use style="stroke:#000000;stroke-width:0.8;" x="263.214545" xlink:href="#mc20af521f5" y="307.584"/>
</g>
</g>
<g id="text_4">
@@ -153,7 +153,7 @@ z
<g id="xtick_5">
<g id="line2d_5">
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="330.850909" xlink:href="#m15357625e1" y="307.584"/>
<use style="stroke:#000000;stroke-width:0.8;" x="330.850909" xlink:href="#mc20af521f5" y="307.584"/>
</g>
</g>
<g id="text_5">
@@ -193,7 +193,7 @@ z
<g id="xtick_6">
<g id="line2d_6">
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="398.487273" xlink:href="#m15357625e1" y="307.584"/>
<use style="stroke:#000000;stroke-width:0.8;" x="398.487273" xlink:href="#mc20af521f5" y="307.584"/>
</g>
</g>
<g id="text_6">
@@ -286,10 +286,10 @@ z
<defs>
<path d="M 0 0
L -3.5 0
" id="md065d6e962" style="stroke:#000000;stroke-width:0.8;"/>
" id="mb7282de85e" style="stroke:#000000;stroke-width:0.8;"/>
</defs>
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="57.6" xlink:href="#md065d6e962" y="295.488"/>
<use style="stroke:#000000;stroke-width:0.8;" x="57.6" xlink:href="#mb7282de85e" y="295.488"/>
</g>
</g>
<g id="text_8">
@@ -302,7 +302,7 @@ L -3.5 0
<g id="ytick_2">
<g id="line2d_8">
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="57.6" xlink:href="#md065d6e962" y="247.488"/>
<use style="stroke:#000000;stroke-width:0.8;" x="57.6" xlink:href="#mb7282de85e" y="247.488"/>
</g>
</g>
<g id="text_9">
@@ -316,7 +316,7 @@ L -3.5 0
<g id="ytick_3">
<g id="line2d_9">
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="57.6" xlink:href="#md065d6e962" y="199.488"/>
<use style="stroke:#000000;stroke-width:0.8;" x="57.6" xlink:href="#mb7282de85e" y="199.488"/>
</g>
</g>
<g id="text_10">
@@ -331,7 +331,7 @@ L -3.5 0
<g id="ytick_4">
<g id="line2d_10">
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="57.6" xlink:href="#md065d6e962" y="151.488"/>
<use style="stroke:#000000;stroke-width:0.8;" x="57.6" xlink:href="#mb7282de85e" y="151.488"/>
</g>
</g>
<g id="text_11">
@@ -346,7 +346,7 @@ L -3.5 0
<g id="ytick_5">
<g id="line2d_11">
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="57.6" xlink:href="#md065d6e962" y="103.488"/>
<use style="stroke:#000000;stroke-width:0.8;" x="57.6" xlink:href="#mb7282de85e" y="103.488"/>
</g>
</g>
<g id="text_12">
@@ -361,7 +361,7 @@ L -3.5 0
<g id="ytick_6">
<g id="line2d_12">
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="57.6" xlink:href="#md065d6e962" y="55.488"/>
<use style="stroke:#000000;stroke-width:0.8;" x="57.6" xlink:href="#mb7282de85e" y="55.488"/>
</g>
</g>
<g id="text_13">
@@ -577,7 +577,7 @@ z
</g>
</g>
<g id="line2d_13">
<path clip-path="url(#p38c3738537)" d="M 73.832727 282.048
<path clip-path="url(#pd2485dfce1)" d="M 73.832727 282.048
L 87.36 277.248
L 100.887273 270.528
L 114.414545 269.568
@@ -599,13 +599,13 @@ L 317.323636 278.208
L 330.850909 270.528
L 344.378182 283.008
L 357.905455 261.888
L 371.432727 289.728
L 384.96 289.728
L 398.487273 289.728
L 371.432727 264.768
L 384.96 258.048
L 398.487273 274.368
" style="fill:none;stroke:#1f77b4;stroke-linecap:square;stroke-width:1.5;"/>
</g>
<g id="line2d_14">
<path clip-path="url(#p38c3738537)" d="M 73.832727 295.488
<path clip-path="url(#pd2485dfce1)" d="M 73.832727 295.488
L 87.36 293.568
L 100.887273 295.488
L 114.414545 295.488
@@ -628,12 +628,12 @@ L 330.850909 295.488
L 344.378182 295.488
L 357.905455 294.528
L 371.432727 295.488
L 384.96 295.488
L 398.487273 295.488
L 384.96 294.528
L 398.487273 294.528
" style="fill:none;stroke:#ff7f0e;stroke-linecap:square;stroke-width:1.5;"/>
</g>
<g id="line2d_15">
<path clip-path="url(#p38c3738537)" d="M 73.832727 232.128
<path clip-path="url(#pd2485dfce1)" d="M 73.832727 232.128
L 87.36 218.688
L 100.887273 208.128
L 114.414545 191.808
@@ -655,9 +655,9 @@ L 317.323636 225.408
L 330.850909 140.928
L 344.378182 237.888
L 357.905455 158.208
L 371.432727 277.248
L 384.96 277.248
L 398.487273 277.248
L 371.432727 179.328
L 384.96 94.848
L 398.487273 209.088
" style="fill:none;stroke:#2ca02c;stroke-linecap:square;stroke-width:1.5;"/>
</g>
<g id="patch_3">
@@ -870,7 +870,7 @@ L 348.72625 83.926688
</g>
</g>
<defs>
<clipPath id="p38c3738537">
<clipPath id="pd2485dfce1">
<rect height="266.112" width="357.12" x="57.6" y="41.472"/>
</clipPath>
</defs>

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 25 KiB

View File

@@ -42,7 +42,7 @@ fn bron_kerbosch1(graph: Graph, cliques: &mut Vec<NodeSet>, r: &mut NodeSet, p:
}
let mut p_clone = p.clone();
let pivot = *p.union(&x).next().unwrap();
let pivot = *p.union(&x).max_by_key(|&&v| graph[v].len()).unwrap();
for &v in p.difference(&graph[pivot]) {
r.insert(v);