2017-10-16 78 views

回答

0

你沒有給太多的信息,但通常情況下,給定一個關係R的傳遞和R的自反閉包是*定義如下關係R:

  • 所有的X,Y使得R (X,Y),關係R *(X,Y)也成立;對於所有X,Y,Z使得R(X,Y)和R *(Y,Z),關係R *(X,Z)成立的所有X,Y,

假設你是如下給出一個函數R,其行爲:

  • (funcall R :x X :y Y)返回一個非零值當且僅當R(X,Y)
  • (funcall R :x X)回報所有的Y使得R (X,Y)
  • (funcall R :y Y)返回所有的X,使得R(X,Y)
  • (funcall R)返回(X。Y)對的列表,其中:R(X,Y)。

然後,你可以建立一個函數,計算傳遞和反射閉包;如果你想知道R*(X,Z)是否成立,你可以從X開始,嘗試所有可能的Y,它們滿足R(X,Y),直到Y等於Z,或者你可以遞歸確定R*(Y,Z)

執行並測試之後,也嘗試檢測週期。