Code Monkey home page Code Monkey logo

adalgo's Introduction

高级算法

点此进入:学习链接(下方link因为部署需要无法直接查看)

图论/离散基础

算法分析设计

该部份比较简单,因此不做详细介绍,仅提供一个目录和部份知识点。

  • 复杂度分析
  • 分治
  • 贪心
  • 动规
    • 划分问题
  • 回溯
  • 局搜

图灵机与P/NP/NPC

NPC 问题证明(按照归约顺序排序)

列表项中带有 未完成 前缀的问题只描述了问题,没有说明具体证明过程;带有 完成 前缀的问题描述了问题和核心解决思路,但省略了具体证明过程的;没有符号的问题同时包含了问题和具体证明过程,其中部份额外附注了核心思路。(下同)


NPC 问题证明(按照证明方法排序)

NPC 问题证明(按照证明难度排序)

以下为分级后的题目难度,可能略有出入,建议掌握所有2分及以下的题目,同时了解所有分数题目的实例形式:

难度分级按照 0-5 分评级:

  • 0分:绝对无任何难度的,一般由等价问题直接归约,只需要理解相关基础概念的问题。
  • 1分:非绝对无难度的,不能说一点难度没有,但也不能认为有多少难度,仅能依靠非0分的状态在坐标中定位,这种暧昧的状态被定为 1分,一般由有限步易得条件推导得到。
  • 2分:有难度的最低值,但无法对其强弱进行判定,有难度的最低测度。一般是证明存在一定篇幅,但相对理解可以通过举例较为容易的理解的归约。
  • 3分:很标准的难,一般是需要大段描述,且中间穿插多个定理,但推演逻辑相对单一线性,且能够通过更简单的描述理解**的归约。
  • 4分:标准之上的难,缺少可以可视化的例子,需要引入许多的符号、公式、定理,只能通过硬核的推导来结束证明。
  • 5分:具有**性的难。目前仍然未被证明的难题。这暂时不会出现在本项目中。

该评级策略参照某定标法略做更改而来,具体链接已经找不到了。个人认为这是主观评分的一个非常棒的标准。

其他

近似算法

Reference

Contributor

adalgo's People

Contributors

broccoli-97 avatar sailist avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

adalgo's Issues

货郎延伸问题NPH的另一种证明方法可行性讨论

关于货郎延伸问题NPH证明是否可以将货郎延伸问题等价转换成货郎优化问题来证明?
就是将已知一部分货郎旅游路径上的点和与这些点相连的边都去掉,形成一个新的图G',将已知一部分货郎旅游路径上最后一个点v作为起点,将B减去已知一部分货郎旅游路径上边长之和得到的C作为新的总行程不小于C的实数,这样就形成了一个新的TSP(优化)问题。而TSP是NPH,那么货郎延伸问题也是NPH。可以这样证明吗?

关于X3C-Y问题的表述优化

1

  • 第一个红框部分是不是应该是 C^{\prime} \subseteq C 的关系
  • 第二个红框部分加上 i \neq j 是不是更好

关于X3C 当且仅当 为何成立的疑问

在 x3c.md 文件中存在下面一句话:

3DM 实例 M 中存在完美对集,当且仅当 X3C 实例 C 中存在 S 的严格覆盖。问题得证。

这句话的当且仅当为什么成立?是不是应该改为左边推出右边?

例如,如果当且仅当成立,则右边推出左边成立。
右边,对于X3C的一个实例

S={1,2,3,4,5,6} 
C={{1,2,3},{1,2,4},{1,2,5},{1,2,6},{4,5,6}}

而言,如何推出左边成立?

图的顶点覆盖问题(VC)中的表述优化

image
这个说“每个三角形对应的边集中的三条边至少有一条边也被覆盖,因此在三角形集中必须选择边集中还未覆盖的边相连的点,最后将每个三角形集选满两个点”是否更好一点?(因为每个三角形对应的边集可能没有两个未覆盖的边,但是每个三角形要选满两个点。)

证明广义划分问题时,是否需要说明只存在一种可能的情况

2.md 文件中:

(<-) 当 GPAR 存在划分时候, 因为 $$S(A)+2S(A)+B=3S(A)+B>2S(A)$$

所以GPAR 问题中新增的两个元素 ${S(A),2S(A)+B}$ 不可能同时在一个划分子集中。

此时将从原 $A$ 中挑选出的元素作为 $A'$,则下式成立(GPAR的划分条件):

$$2S(A)+B+S(A')=2(S(A)+S(A-A'))$$

注:规定一下符号,B'和B-B'是GPAR问题里划分出来的两个子集,A'和A-A'是PAR问题里划分出来的两个子集

我觉得这段话想要表达的意思是,如果GPAR存在划分,这个划分必定是B'=A'∪{2S(A)+B},其他的划分不可能存在,然后再用2S(A)+B+S(A')=2(S(A)+S(A-A')) 这个式子解出等式。

然而,这里只说明了两个元素 ${S(A),2S(A)+B}$ 不可能同时在一个划分子集中

应当说明以下情况:

  • S(A)2S(A)+B 不能都在B' 中,也不能都在B-B' 中(即原答案所述)
  • S(A)B' 中,同时 2S(A)+BB-B' 的这种情况不存在(否则推出矛盾)

因此,只有以下情况是可能的:

  • 2S(A)+BB'中,S(A)B-B'

令PAR问题的A'为A∩B',A-A'自然为A∩(B-B')

套用 2S(A)+B+S(A')=2(S(A)+S(A-A')) 这个式子解出等式,完成后面的证明。

直接套用的话感觉说的不严密。

【注:经过底下的评论的纠正,进行了修改。如果感觉后面的对话有突兀的感觉,请翻看编辑的历史记录。】

关于 X3C-Y 实例和 X3C 实例对应关系的疑问

3.md 文件中:

若 X3C-Y 中存在 $D'$ 是 T 的严格覆盖,对于同一个 j 对应的五个元素 $d_{j,1}\sim d_{j,5}$,可得要么同时选中 $d_{j,1}\sim d_{j,3}$,要么同时选中 $d_{j,4},d_{j,5}$ 两个。

此时令严格匹配 D' 中的每三个元素 $d_{j,1}\sim d_{j,3}$ 对应选择原 X3C 问题中的 $c_j$,可得该种方式构成的子集 $C'$,恰好为对 $S$ 的严格覆盖。

上述说明比较难以理解,下面通过一个简单的例子来说明对应过程:
例如,
X3C 实例项集合为 C = {c1-c5},5个元素,那么相应构建的 X3C-Y 实例的项集合即为 D={d1(1-5),d2(1-5),...,d5(1-5)},共 25 个元素

假如可以找到一个 X3C 的严格覆盖  C'={c1,c3,c5},那么X3C-Y 的严格覆盖 D' 就是 {d1(1-3),d3(1-3),d5(1-3), d2(4-5),d4(4-5)},反之同理。

这里,首先,我感觉 反之同理 不是那么明显,在证明X3C->X3C-Y的时候我们可以知道,哪个是d_{i,1},哪个是d_{i,4},因为d是通过c构造的。但是反过来,这里证明X3C-Y->X3C时,对于D或者D'中的任意一个元素d,怎么知道它原本对应的是d_{i,j}中的哪个i和j?

再往上的令严格匹配 D' 中的每三个元素 $d_{j,1}\sim d_{j,3}$ 对应选择原 X3C 问题中的 $c_j$也一样,怎么知道这个对应关系?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.