You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

实现Prolog谓词:筛选包含图G全部顶点的测试图列表

分析与完善你的Prolog顶点覆盖筛选谓词

首先,先明确你的需求:给定一个测试图列表(每个测试图是边的列表)和一个目标图(边的列表),筛选出所有包含目标图全部顶点的测试图。

现有代码的正确部分

你的vertex/2和isItCov/2逻辑是正确的:

  • vertex(V, Graph):正确实现了检查顶点V是否存在于图Graph(边列表)中的功能,通过匹配边的两个端点或递归遍历剩余边来验证。
  • isItCov(G, H):通过遍历目标图G的每条边,检查两个端点都在测试图H中,从而确保G的所有顶点都被H包含——这个逻辑是对的,因为目标图的所有顶点就是其边的端点集合。

需要调整的部分

你的covb/2谓词没有实现筛选功能,而是在检查整个测试图列表中的每个图都满足条件。我们需要改写它,让它能从列表中挑出符合条件的测试图。

完善后的完整代码

% 主谓词:筛选出测试图列表中所有包含目标图全部顶点的图
% 参数:TestGraphs(输入:测试图列表), TargetGraph(输入:目标图), ResultGraphs(输出:符合条件的图列表)
filter_covering_graphs([], _, []).
filter_covering_graphs([TestGraph|Rest], TargetGraph, [TestGraph|ResultRest]) :-
    is_it_cov(TargetGraph, TestGraph),
    filter_covering_graphs(Rest, TargetGraph, ResultRest).
filter_covering_graphs([TestGraph|Rest], TargetGraph, ResultRest) :-
    \+ is_it_cov(TargetGraph, TestGraph),
    filter_covering_graphs(Rest, TargetGraph, ResultRest).

% 检查目标图的所有顶点都存在于测试图中
is_it_cov([], _).
is_it_cov([V-W|GEdges], TestGraph) :-
    vertex(V, TestGraph),
    vertex(W, TestGraph),
    is_it_cov(GEdges, TestGraph).

% 检查顶点V是否在图(边列表)中存在
vertex(V, [V-_|_]).
vertex(V, [_-V|_]).
vertex(V, [_|RestEdges]) :-
    vertex(V, RestEdges).

代码说明

  1. filter_covering_graphs/3:

    • 空输入列表对应空输出列表。
    • 如果当前测试图满足顶点覆盖条件(is_it_cov返回真),就把它加入结果列表,再递归处理剩余的测试图。
    • 如果不满足条件,就跳过该图,直接递归处理剩余列表。
  2. is_it_cov/2:

    • 空目标图默认满足条件(因为没有顶点需要覆盖)。
    • 对目标图的每条边,验证两个端点都在测试图中,再递归处理剩余边。
  3. vertex/2:

    • 直接匹配顶点作为边的第一个/第二个端点。
    • 如果当前边不匹配,就递归遍历剩余边。

验证示例

我们用一个实际例子测试:

% 测试图列表:三个不同的图
TestGraphs = [
    [a-b, b-c],  % 包含顶点a,b,c
    [a-c, d-e],  % 包含顶点a,c,d,e
    [x-y]        % 包含顶点x,y
]
% 目标图:包含顶点a和c
TargetGraph = [a-c]

% 查询
?- filter_covering_graphs(TestGraphs, TargetGraph, Result).
Result = [[a-b, b-c], [a-c, d-e]] ;
false.

结果符合预期:前两个测试图都包含a和c,第三个不包含,所以被排除。

再测试空目标图的情况:

?- filter_covering_graphs([[a-b], [x-y]], [], Result).
Result = [[a-b], [x-y]] ;
false.

所有测试图都符合条件,因为空目标图没有顶点需要覆盖。

内容的提问来源于stack exchange,提问作者user7303261

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:01:39