我是新來的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」的代碼在哪裏? –