グラフをトラバースしていて、ノードが以前に見られたかどうかをすばやく判断したいとします。いくつかの前提条件が設定されています。
- ノードは整数値 1..N でマークされています
- グラフは、隣接リストを持つノードで実装されます
- 1..N のすべての整数値がグラフに出現し、サイズは N です。
純粋に機能的な方法でこれを行うためのアイデアはありますか?(ハッシュテーブルまたは配列は許可されていません)。
2 つの関数が動作するデータ構造が必要です。add (遭遇した整数を追加) および lookup (整数が追加されたかどうかをチェック)。どちらも、N回の繰り返しで償却されるO(n)時間かかることが望ましいです。
これは可能ですか?