あなたはこれを間違った方法で行っていると思います。サイクルがあるグラフの最大パスは、サイクルが開始と終了の間にある場合は無限であるため、技術的には未定義です。おそらく、最大パスの定義を拡張/制限できる巧妙な方法があるでしょうが、それがここでの最良のアプローチだとは思いません。
実際の長いパスをモデル化しようとしているのではありません(たとえば、ロボットがマップ内のできるだけ多くのエリアを探索しようとしている)。あなたは単にプレイヤーに多くの部屋を探検させようとしているだけです。
そのため、プレーヤーが出口を見つける可能性を、これまでに探索したマップのパーセンテージに比例するようにしてください。レベルにX個の部屋があり、プレーヤーキャラクターがYを探索したとします。次に、キャラクターが部屋に入るときに、f(Y、X)の確率でそこに出口を配置します。fの自明な例は(Y * Y)/(X * X)です。たとえば、10部屋の場合、最後の部屋に出る確率は100%、最後の部屋の隣にある確率は81%です。最初の部屋にいる確率は1%です。
ゲームを正しく感じさせたい場合は方程式を微調整できます。また、プレーヤーに生成する可能性を高めるための能力をプレイヤーに与えることもできます。重要なのは、キャラクターが実際に部屋に入るまで出口を生成しないことです。この方法は、ダンジョン生成アルゴリズムに関するプレイヤーの知識の影響も受けません。プレイヤーがNetHackでの騎士のジャンプやテレポーテーションのような奇妙な動きのパターンを持っている場合でも、出口を見つけるために、より多くの部屋を探索する必要があります。
静的に出口を生成する必要がある場合は、仮想キャラクターで同じアイデアを使用できます。キャラクターの位置から始まり、各反復でセルを1回移動する塗りつぶしを想像してください。埋められる最後の部屋は、出口が属する部屋です(実際、最後に埋められるセルは、プレイヤーから最も遠いセルです)。ただし、この場合、プレーヤーは出口についてより多くの情報を持っています。左側にいる場合、右側にある可能性が高く、テレポートできる場合、実際には通常のランダムウォークよりも速く到達できる可能性があります。
最後に、出口がマップの反対側にプレイヤーキャラクターから出現するローグライクを完成させ、ランダムにさまよった。ダンジョン内のいくつかのアイテムは、空腹が速くなることを犠牲にして、それを地図上に表示しました。私は何も分析しませんでしたが、それを見つけるためにマップをさらに探索する必要があることは間違いなく感じられ、レベルに独特の感覚が与えられました。