D20を傾けるための「最良の」方法は何ですか?

enter image description here

上記のような通常のD20ダイ( 20面体)は、対向する面の合計が21であることを示している。各三角形の面は、共有された端縁fe (1) - {7,13,19}

Find an optimum series of face-to-face tilts with the following rules:

  • You may start with any chosen face shown (i.e. facing upwards)
  • You may show the same face more than once during the series.
  • The complete series should have shown each number at least once
  • The sequence of numbers needs to contain the ascending order of the numbers 1 to 20.

もちろん、このようなシーケンスが多数あるため、最適化する条件は次のとおりです。

  • Each tilt move which lowers the shown number from what it was before counts as a negative point.
  • Minimize the amount of negative points.


最低のスコアを持つチルトのシーケンスは何ですか?



いくつかの説明

  • I do believe that "regular" D20 dice have identical numbering, but I might be wrong. Therefore the die used for this puzzle is the one depicted above.

  • This would be a valid tilting sequence of the D20 from above (face-by-face):

    19,1,13,5,15,12,2,20,14,6,9,19,3,19,9...

  • This would be a valid number sequence:

    14,11,1,5,8,2,1,7,6,3,4,5,6,12,11,7,8,1,2,9,10,11,12,13,14,7,18,15,16,17,18,19,3,20

    ( This sequence can not be gotten by tilting the D20 face-by-face, though!! )

  • The score for the sequence above would be:

    14,11,1,5,8,2,1,7,6,3,4,5,6,12,11,7,8,1,2,9,10,11,12,13,14,7,18,15,16,17,18,19,3,20

    = 12 negative points

9

3 答え

この問題をいくつかのサブ問題に分解する可能性があることに注意してください。

負の数が最も少ない$ n $から$ n + 1 $までの経路は何ですか?

各有効シーケンスを$ n $から$ n + 1 $に渡すサブパスに分割することができるので、各$ n = 1、\ ldots、19 $に対するこの問題を解決する方法は、適切な順序。

私はこれを行うための特別な巧妙な方法はありませんが、本質的には、最も少ない数のエッジを逆方向に横切る有向非循環グラフ上のパスを見つけようとしています。グラフは平面でもあり、便利かもしれません。

しかし、私は暴力なくこれを行う方法を理解することができませんでした。そこで、私はこれらのサブ問題のそれぞれを解決するためにDijkstraのアルゴリズムを実装しました(各エッジの重みが$ 0 $または$ 1 $であるために特定の最適化が行われました)。その結果、最適なパスではなく、後方に32ドルのエッジをトラバースしました。

1 、7、17、10、12、 2 、20,8,10,17, 3 、16、6、 14、 4 、18、 5 、18、4、   14、 6 、9,11,13,1、 7 、17,10、 8 、16、6、 9 、6、14、20、8、 10 、8、16、    11 、4,14,20,2、 12 、15,5、 13 、11、4、 14 、20、2、12、 15 、7、   3、 17 、7、15、5、 18 、4,11,9、 19 、9、6、14、 20

8
追加された
+1は明快さと検証のためです。答えはこのパズルの最初の正解(コンピューターなしで見つけられる)と変わらないので、私は受け入れの答えを保ちますが、私はあなたの投稿を非常に高く評価します。
追加された 著者 BmyGuest,

他の困惑者への援助として、ここに許容される顔の遷移のグラフがあります:

enter image description here

グラフに現れる数多くの五角形に注目してください。これは、二十面体の二重が十二面体であるため、一方の顔隣接グラフは他方の頂点隣接グラフです。

訪問した最後の「順序」のノード(顔)を覚えて問題をモデル化できます。この状態変数は、20種類の異なる値をとることができます。 20人の異なる顔と組み合わせると、合計400の異なる状態があります。コンピュータで簡単に検索できるほど小さな状態です。

私の方法は、上記のグラフを20枚作成します。これを「レベル」と呼んでいます(建物の床のように上に積み重ねたものと思います)。各レベルは、より高いレベルの数に対応する顔との間の次のレベルに至る単一の一方向エッジを有する。たとえば、レベル1の面2はレベル2の面2に接続されています。

The remaining 600 edges are all bidirectional, but have different weights in each direction. Going from a higher-numbered face to a lower-numbered face costs $1$, and going from a lower-numbered face to a higher-numbered face costs a small amount $\varepsilon$. (In my particular implementation, $\varepsilon=10^{-3}$.) This forces a path-finding algorithm to prioritize finding the path with the fewest decreases ("negative points" in the question) over finding one with the fewest edges (although because $\varepsilon>0$ we will find the shortest path out of those which share the lowest score).

最後に、レベル1のフェイス1からレベル20のフェイス20までの最短経路を見つけ、

1,13,5,18,2,20,8,16,3,16,6,14,4,18,5,18,4,14,6,9,19,1,7,17 、10,8,16,6,9,19,3,17,10,12,15,5,13,​​11,13,5,15,12,15,5,13,​​11,4,14,20 、2,12,15,7,17​​,3,16,3,17,10,12,2,18,5,13,​​1,19,9,6,14,20

32.037のコスト(69エッジ以上の32点、または70面)。

7
追加された
@BmyGuest私は私の答えの中で実際にコードを言及したとは思わない。しかし、確かに、そのようなものがあなたのボートを浮かべるならば、私は多くの間違いをする傾向があるので、私は個人的に手作業なしでメソッドを使用することを好みます。
追加された 著者 Edit Your Profile,
非常に素晴らしい。そして今、すべてのグラフ理論の専門家が飛び越えて、最適な解決策を示すことができます:c)
追加された 著者 BmyGuest,
コードは本当に必要でしたか?あなたのグラフを見ると、「1で始まる」が次のより高い数字への「最良の」経路を常に見つけているように、「自然に」と簡単には言えませんか?これは、グラフを見るだけで非常に簡単に実行できます。後続の数値ノードの間にはまれなステップがほとんどありません。
追加された 著者 BmyGuest,
"path-finding algorithm"はコンピュータベースのものだったので、私の質問です。私はあなたの体系的なアプローチに同意します。
追加された 著者 BmyGuest,
ありがとう!流れに乗るのが好きな直感的な困惑者のために、高い数字を指す方向性の矢印を追加するように気をつけますか?
追加された 著者 Vzzdak,

明らかに$ 1 $から始めるべきです。

a)数字は$ 2、\ ldots、$ 8,8 $は高級句に囲まれているので、そこに入ると少なくとも1つのポイントが必要になります。
b)$ 7 $はより高い値または$ 1 $に囲まれているので、$ 7 $になると少なくとも1ポイントも(少なくとも!)コストがかかります。同様に$ 9 $は\ text {a}} $でより高く、$ 6 \ \ text {a}} $で$ 10 $を高く、$ 8を\
c)後方を見ると、$ 19、\ ldots、12 $から$ 20、\ ldots、13 $に近づくと、先行する数値よりも小さい値で囲まれているので少なくとも1ポイントはかかります(例えば$ 19 \ rightarrow \ text {下} \ rightarrow 20 $)。
d)$ 10 $から$ 11 $にすることは、最低1ポイント必要です。$ 10 $を残しているビーコンは、直接または$ 8 $を介して$ 11 $以上になる必要があります。 $ 11 $から$ 12 $への道も1点かかります - それは$ 13 $または$ 9-19 $または$ 9-6 - \ {14,16 \} $または$ 4 - \ {14,18 \} $です。

したがって、パス全体で最低19のマイナス点が使用されます。

私が見つけたベスト:$ 1 $、7,15,12、$ 2 $、20,8,16,3 $、19,9,11、$ 4 $、18、$ 5 $、18,4,14、$ 6 $、9 、19,1、7、17、10、8、16、9、6、16、10、 、15,5、13ドル、11,4ドル14ドル、20,2,12ドル、15ドル、7,17,3ドル、16ドル、3ドル、17ドル、10,12,15,5ドル、18ドル、4ドル、11,9、$ 19 $、3,16,8、$ 20 $ 32ポイントの価値がある。

D20には、タイルの配置を記述する厳密な数学的パターンはありません(

コンピュータで見つけた私の最高は32ポイント(しかし、1つ短い移動です):1,13,5,18,2,20,8,16,3,16,6,14,4,18,5、 18,4,14,6,9,19,1,7,17​​,1‌ 0,8,16,6,9,19,3,17,1‌ 0,12,15,5,13、 11,13,5‌、15,12,15,5,13,​​11,4、および14; 14,20,2,12,15,7,17​​,3‌、16,3,17,10 、12,2,18、および
zwnj; 5,13,​​1,19,9,6,14,20
追加された 著者 Edit Your Profile,
こんにちは、サイトにようこそと答えに感謝!私はいくつかのより良いものが到着するまでこの答えを受け入れます。
追加された 著者 BmyGuest,
D20の顔のリンクありがとう。あなたの32moveの解決策は、他の回答によって検証されたように「最適」と思われるので、私はそれを受け入れたものとして保ちます。
追加された 著者 BmyGuest,