序言中汉密尔顿电路的实现

时间:2018-10-25 15:43:00

标签: prolog hamiltonian-cycle

我想建立哈密顿回路,但是在序言中写路径谓词时卡住了。我已经实现了可以正常工作的子句:`-NamespaceDecl 0x555ce9e8b508 prev 0x555ce9e88d38 </class.cc:3:1, line:277:1> line:3:11 my_namespace |-original Namespace 0x555ce9e7c268 'my_namespace' |-CXXMethodDecl 0x555ce9e8b970 parent 0x555ce9e88da0 prev 0x555ce9e89480 <line:4:1, line:18:1> line:4:16 Init 'void (std::MyOtherClass *, std::my_namespace::paramstruct_t *, const std::object *, std::double, std::int, std::string, std::string, std::ob f_namespace::MyClass *)' | |-ParmVarDecl 0x555ce9e8b5a0 <col:21, col:29> col:29 used env 'std::MyOtherClass *' | |-ParmVarDecl 0x555ce9e8b610 <col:34, col:49> col:49 used params 'std::my_namespace::paramstruct_t *' | |-ParmVarDecl 0x555ce9e8b680 <line:5:21, col:36> col:36 used j_dd 'const std::object *' | |-ParmVarDecl 0x555ce9e8b6f0 <col:47, col:55> col:55 used j_cc 'std::double':'double' | |-ParmVarDecl 0x555ce9e8b760 <col:65, col:70> col:70 used j_bb 'std::int':'int' | |-ParmVarDecl 0x555ce9e8b7d0 <line:6:21, col:29> col:29 used js_aa 'std::string':'std::_string *' | |-ParmVarDecl 0x555ce9e8b840 <col:46, col:54> col:54 used js_ee 'std::string':'std::_string *' | |-ParmVarDecl 0x555ce9e8b8b0 <line:7:21, col:32> col:32 used my_class 'std::my_namespace::MyClass *' | `-CompoundStmt 0x555ce9e8c3b8 <col:44, line:18:1> | `-CXXMemberCallExpr 0x555ce9e8c350 <line:17:5, col:36> 'void' | |-MemberExpr 0x555ce9e8c2c8 <col:5, col:17> '<bound member function type>' ->Init 0x555ce9e854b0 | | `-ImplicitCastExpr 0x555ce9e8c2b0 <col:5> 'std::my_namespace::MyClass *' <LValueToRValue> | | `-DeclRefExpr 0x555ce9e8c288 <col:5> 'std::my_namespace::MyClass *' lvalue ParmVar 0x555ce9e8b8b0 'my_class' 'std::my_namespace::MyClass *' 在图形G包含顶点[V0,V1]时成功。还有一种称为connected(V0, V1, G)的方法,如果L不包含X,该方法将成功。

我的任务是在序言中编写不使用内置方法的汉密尔顿路径: notcontains(X, L)。如果Path是长度为N的列表,则该谓词必须成功,并且从 Vbegin并以Vend结尾,例如Path的任何元素(例外 的第一个元素),出现在“禁止”中,没有任何元素出现 在Path中两次,并且Path中的每个元素都连接到下一个 元素位于G的边缘。

path(G, Vbegin, N, Forbidden, Path, Vend)

我试图解决此问题的尝试如下(我想在此谓词成功之后添加Vend):

For Example:
graph2( G), path( G, 3, 2, [3], P, Last ).
G = [[1, 2], [2, 3], [2, 4], [3, 4], [4, 3], [3, 1], [4, 1]],
P = [3, 4],
Last = 4 ;
G = [[1, 2], [2, 3], [2, 4], [3, 4], [4, 3], [3, 1], [4, 1]],
P = [3, 1],
Last = 1 ;

但似乎我缺少一些基本步骤。解决该问题的任何帮助将不胜感激。

0 个答案:

没有答案