1

グラフによるしりとりの表現

168
0

なんか思いついたので書いときます。だいぶ適当です。

グラフ理論についてはこちら↓
グラフ理論の基本

しりとりをグラフで表現する

その1

しりとりのルールを数学っぽく表します。とはいえ、あまり厳密にするのも面倒なので、ゆるっとやります。

しりとりは単語の列でw1w2w3と続いていきますが、これを有向グラフの有向道とみなしましょう。つまり、単語を頂点とするのです。

具体的には次のようにします。しりとりに使える単語全体の集合をWとします。さらにwWの最初の文字をinit(w)、最後の文字をter(w)と表します。すると辺集合EW2E:={(v,w)W2ter(v)=init(w)}と定めれば、グラフ(W,E)が得られます。

しりとりにおける手番の行動は現在の単語(頂点)の(その単語を始点とする)隣接点を一つを選ぶことです。そしてすでに選ばれた単語(頂点)を選んでしまったら負けになります。必然的にその単語の隣接点がすべてすでに選ばれている場合、負けになります。つまり、しりとりの試合は有向道として得られます。

「ん」で終わる単語をいったら負けになるルールも、そのような単語(頂点)を選んだら負け、とすればよいでしょう。あるいは、「ん」で終わる単語をWに含めないという方法もあります。

濁点や拗音、長音については些細なことです。望むように(w),ter(w)を定義すればいいのですから。

さて、一応は形ができましたが、このグラフは頂点も辺もかなり多いものになっています(頂点数が単語数で、辺数はその自乗の150くらい)。どうにかしてもっと単純なグラフにできないでしょうか。

その2

先ほどは単語を頂点とみなしましたが、今度は辺とみなしてみましょう。つまり、頂点集合を文字全体の集合Lとし、辺集合をW、接続関数をψ:w(init(w),ter(w))とします。するとG=(L,W,ψ)がグラフになります。

このとき、手番行動は、辺を一つ選ぶことになり、しりとりの試合は小径として得られます。すでに選ばれている辺を選ぶことはできません。

このグラフは頂点数が約50、辺数が単語数になります。

その3

先ほどのグラフG=(L,W,ψ)の平行な辺は特に違いがありません。なので、平行な辺の本数#:L2Nを重みとする重み付きグラフ(L,L2)と同一視できます。

このとき、手番行動は今いる頂点から伸びている辺を一つ選び、その重みを1だけ減らすことになります。すでに重みが0になっている辺は選べません。しりとりの試合は歩道として得られます。

このグラフは頂点数が約50、辺数が約2500になります。

投稿日:2023410
OptHub AI Competition

この記事を高評価した人

高評価したユーザはいません

この記事に送られたバッジ

バッジはありません。
バッチを贈って投稿者を応援しよう

バッチを贈ると投稿者に現金やAmazonのギフトカードが還元されます。

投稿者

三星聯
三星聯
36
6259
主にフィボナッチ数列とパスカルの三角形の関係について書いていくと思います。

コメント

他の人のコメント

コメントはありません。
読み込み中...
読み込み中
  1. しりとりをグラフで表現する
  2. その1
  3. その2
  4. その3