我是新来的Prolog,我需要一些帮助:d图形Prolog中
我学到递归,我知道如何使用它(或多或少)。 我有图表的麻烦。我试图解决背包问题,所以我在一步一步迈出。
我的问题: 我有一个类型列表,我想使长度为n(= 3)的所有子列表,并选择最大的值。我想我需要一个函数将类型列表的头部拉出来,并将它传递给另一个递归调用“儿子”的函数。我的想法是这样的:
append([],L2,L2):- !.
append([T|C],L2,[T|L3]):-
append(C,L2,L3).
genera_ext(_,[],_).
genera_ext(Padre,[TT|CT],Figlio):-
genera(Padre,TT,[TT|CT],Figlio),
genera_ext(Padre,CT,[]).
genera(Padre,Elem,L_tipi,Figlio):-
append(Padre,[Elem],Base),
copy_term(Figlio,Base),
length(Base,Lun),
Lun =< 3,
genera_ext(Base,L_tipi,Temp),
total_ing(Temp,I_Temp),
total_ing(Base,I_Base),
I_Temp >= I_Base,
copy_term(Figlio,Temp),
nl,write("Figlio = "),write(Figlio).
genera(_,_,_,_).
有明显的错误。你可以帮帮我吗?谢谢:( MR
编辑:
我有一些事实
art(xxx,weight_xxx).
,这是计算由元素组成的列表XXX的
total_ing([],0).
total_ing([X|C],I0):-
art(X,N),
total_ing(C,I1),
I0 is I1 + N.
我的权重函数称之为
genera_ext([],L_tipi, Figlio)
其中L_tipi是我可以选择的元素xxx的列表。
我想生成元素xxx的所有可能的子列表长度为3,并选择最大的权重。
你怎么称呼它?什么是不工作的目标?你能告诉我们你希望做什么吗? “total_ing/2”的代码在哪里? –