たとえば、次のようなグラフがあります。
(define graph
'((a . (d b))
(b . (c e))
(c . (e)))
(d . ())
(e . ())
私は3つの関数を定義しています:
get-all-node
: このグラフ内のすべてのノードのリストを(get-all-node graph)
返します。(a b c d e)
find-node
: これは、ノードがネストされたリストにあるかどうかに関係なく、ブール値の #t または #f を返します(find-node 'b '(a . (d b)))
。
(find-inverse-node 'b '(a . (d b)))
find-inverse-node: 特定のノードを含むペアの最初の要素を返します。たとえば、(a b)
get-all-node 関数で返された各要素を使用してグラフをループし、その要素がペアの 2 番目の部分にあるかどうかを調べ、含まれている場合は、見つかったノードのリストに追加します.
例:(loop-graph graph)
返品((e b c) (e) (d) (c b) (d a) (b a))
私はこれを長い間試みましたが、成功していません。助けてください !!前もって感謝します!!