Prob_Solve 板


LINE

※ 引述《aerolien (aerolien)》之铭言: : A_in、A_out、B_in、B_out、C_in、C_out、D_in、D_out : 这几种状况去作排列组合 : 限制为 : A_in 先於 B_in 先於 C_in 先於 D_in : 要先 in 才能 out : 而out则没限制先後 : 若单纯只用数学去算是105种情况 : 只是现在必须要探讨这105种情况必须一一列出 : 想用程式写 : 该怎麽去解 ? 只有用穷举一途吗? 数学是吧? 可以用Prolog写: 首先定义项目前後关系, check(A, Bs) 是检查一列资料以A开头,并以Bs为後续序列: check('A_in', Zs) :- member('B_in', Zs), member('C_in', Zs), member('D_in', Zs), member('A_out', Zs). check('B_in', Zs) :- not(member('A_in', Zs)), member('C_in', Zs), member('D_in', Zs), member('B_out', Zs). check('C_in', Zs) :- not(member('A_in', Zs)), not(member('B_in', Zs)), member('D_in', Zs), member('C_out', Zs). check('D_in', Zs) :- not(member('A_in', Zs)), not(member('B_in', Zs)), not(member('D_in', Zs)), member('D_out', Zs). check(X, _) :- not(member(X, ['A_in','B_in','C_in','D_in'])). 然後,按照以下这个"排列"的逻辑规则: (按:请注意这题是排列,不是组合.) permu([], []). permu(Xs, [Y|Zs]) :- member(Y, Xs), without(Xs, [Y], Xs1), permu(Xs1, Zs). 可能改写一下,变成一种附带前後条件的排列: io(['A_in','A_out','B_in','B_out','C_in','C_out','D_in','D_out']). permu_io([], []). permu_io(Xs, [Y|Zs]) :- member(Y, Xs), without(Xs, [Y], Xs1), permu_io(Xs1, Zs), check(Y, Zs). without(As, [B], Cs)的意思是从As这种资料序列拿走其中存在的B项目,得到结果 为Cs序列: without([], [_], []). without([Y|Ys], [Y], Ys). without([X|Ys], [Y], [X|Zs]) :- X \= Y, without(Ys, [Y], Zs). 最後,取解的主要程式是: solution(Answer) :- io(List), permu_io(List, Answer). 而以下一行查询,可以找出共有多少种排列: ?- setof(Xs, solution(Xs), SoXs), length(SoXs, N). SoXs = ... N = 105. --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.160.108.129
1F:→ yauhh:Prolog的演算法,可以算是DFS,backtracking. 08/11 21:43
2F:推 aerolien:感谢解答 08/12 03:12







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:e-shopping站内搜寻

TOP