- 数据结构与算法
- DSA - 首页
- DSA - 概述
- DSA - 环境设置
- DSA - 算法基础
- DSA - 渐近分析
- 数据结构
- DSA - 数据结构基础
- DSA - 数据结构和类型
- DSA - 数组数据结构
- 链表
- DSA - 链表数据结构
- DSA - 双向链表数据结构
- DSA - 循环链表数据结构
- 栈与队列
- DSA - 栈数据结构
- DSA - 表达式解析
- DSA - 队列数据结构
- 搜索算法
- DSA - 搜索算法
- DSA - 线性搜索算法
- DSA - 二分搜索算法
- DSA - 插值搜索
- DSA - 跳跃搜索算法
- DSA - 指数搜索
- DSA - 斐波那契搜索
- DSA - 子列表搜索
- DSA - 哈希表
- 排序算法
- DSA - 排序算法
- DSA - 冒泡排序算法
- DSA - 插入排序算法
- DSA - 选择排序算法
- DSA - 归并排序算法
- DSA - 希尔排序算法
- DSA - 堆排序
- DSA - 桶排序算法
- DSA - 计数排序算法
- DSA - 基数排序算法
- DSA - 快速排序算法
- 图数据结构
- DSA - 图数据结构
- DSA - 深度优先遍历
- DSA - 广度优先遍历
- DSA - 生成树
- 树数据结构
- DSA - 树数据结构
- DSA - 树的遍历
- DSA - 二叉搜索树
- DSA - AVL树
- DSA - 红黑树
- DSA - B树
- DSA - B+树
- DSA - 伸展树
- DSA - 字典树
- DSA - 堆数据结构
- 递归
- DSA - 递归算法
- DSA - 使用递归实现汉诺塔
- DSA - 使用递归实现斐波那契数列
- 分治法
- DSA - 分治法
- DSA - 最大最小问题
- DSA - Strassen矩阵乘法
- DSA - Karatsuba算法
- 贪心算法
- DSA - 贪心算法
- DSA - 旅行商问题(贪心算法)
- DSA - Prim最小生成树算法
- DSA - Kruskal最小生成树算法
- DSA - Dijkstra最短路径算法
- DSA - 地图着色算法
- DSA - 分数背包问题
- DSA - 带截止日期的作业排序
- DSA - 最优合并模式算法
- 动态规划
- DSA - 动态规划
- DSA - 矩阵链乘法
- DSA - Floyd-Warshall算法
- DSA - 0-1背包问题
- DSA - 最长公共子序列算法
- DSA - 旅行商问题(动态规划方法)
- 近似算法
- DSA - 近似算法
- DSA - 顶点覆盖算法
- DSA - 集合覆盖问题
- DSA - 旅行商问题(近似算法)
- 随机算法
- DSA - 随机算法
- DSA - 随机快速排序算法
- DSA - Karger最小割算法
- DSA - Fisher-Yates洗牌算法
- DSA有用资源
- DSA - 问答
- DSA - 快速指南
- DSA - 有用资源
- DSA - 讨论
近似算法
近似算法
近似算法是为解决在多项式时间内无法求解的问题而设计的算法,以获得近似解。这些问题被称为NP完全问题。这些问题对于解决现实世界中的问题非常有效,因此,使用不同的方法来解决它们变得很重要。
NP完全问题仍然可以在三种情况下得到解决:输入可能非常小,以至于执行时间减少了;某些问题仍然可以分类为可以在多项式时间内解决的问题;或者使用近似算法为问题找到接近最优的解。
这导致了近似问题性能比的概念。
性能比率
计算近似算法的性能比(也称为近似比)背后的主要思想是找到近似解与最优解的接近程度。
近似比用ρ(n)表示,其中n是算法的输入大小,C是算法获得的近似最优解,C*是问题的最优解。当且仅当满足以下条件时,算法的近似比为ρ(n):
$$max\left\{\frac{C}{C^{\ast} },\frac{C^{\ast }}{C} \right\}\leq \rho \left ( n \right )$$
然后该算法被称为ρ(n)-近似算法。近似算法可以应用于两种类型的优化问题:最小化问题和最大化问题。如果问题的最优解是找到最大成本,则该问题被称为最大化问题;如果问题的最优解是找到最小成本,则该问题被称为最小化问题。
对于最大化问题,近似比由C*/C计算,因为0 ≤ C ≤ C*。对于最小化问题,近似比由C/C*计算,因为0 ≤ C* ≤ C。
假设近似算法的成本都是正数,则性能比是明确定义的,并且不会小于1。如果值为1,则表示近似算法生成了精确的最优解。
示例
一些流行的近似算法示例包括:
子集和问题
广告