将优化问题转换为决策问题求解

1. 简介

将优化问题(optimize problem)转换成决策问题(decision problem),是一种非常实用的设计原则,转换完成之后,再利用二分法求解。

  • 优化问题的返回值通常是实数或者整数;⇒ 可能的答案有无数多个;
  • 决策问题的含义较为简单,只有“是”或“否”(自行脑补军队里,军官和新兵的对话)这两种答案的问题;⇒ 答案只有两个;

下面是以优化问题和决策问题的形式定义的旅行商问题:

  • optimize(G) ⇒ 返回全部访问图 G 中的端点后,回到起点的最短路径;
  • decision(G, x) ⇒ 返回全部访问图 G 的所有端点后,是否存在回到起点的路径中长度小于 x 的路径(决策问题)
double optimize(const Graph& g);
bool decision(const Graph& g, double x){
    return optimize(g) <= x;
}
原文地址:https://www.cnblogs.com/mtcnn/p/9423790.html