小编Dan*_*mon的帖子

示例问题不在P中,也不在NP完全中,而是在NP中

我在大学里有一门名为算法分析的课程,我们目前正在研究不同的复杂性类别 - P,NP,NP-hard等.

我们已经讨论过NP完全问题作为NP与NP之间的交集,以及NP中包含的P问题.我们还讨论了一些例子,主要是NP完全问题(k-coloring,k-clique,SAT).

大多数时候,我们通过以下方式证明问题是NP完全的:

一个.找到一个不确定的算法来解决它(使用选择,成功,失败);

湾 减少已知的NP完全问题.

问题是这些问题,当在确定性机器上运行时(顺序而不是在遇到选择时同时分支)具有指数时间解决方案.

我的问题是 - 我从未遇到过在指数时间内既不能在多项式时间内解决的问题; 多项式时间问题在P中,指数时间问题通常在NP完全中.

这里有一个有用的维恩图:http: //en.wikipedia.org/wiki/Np_complete

  1. 我想知道一个问题的例子既不是在NP中,也不是在NP中.

  2. 另外,本质上是指数问题,比如生成NP-complete集的幂集?或者该名称仅适用于仅使用指数时间算法的问题,因为没有其他明显的方法可以解决它?

好的,所以我给了Rosh Oxymoron的答案,因为他实际列出了一些疑似在P和NPC之间的问题的例子.谢谢你的帮助,我实际上注意到我把这个问题放错了地方.还有:https: //cstheory.stackexchange.com/

在那里我发现了以下非常有用的回答我的问题: https://cstheory.stackexchange.com/questions/79/problems-between-p-and-npc 这是专门约我问及: https://开头cstheory .stackexchange.com/questions/52/hierarchyies-in-np-under-the-assumption-that-p-np ,如果与初始问题不完全相关,通常很有趣.

非常感谢,

theory complexity-theory computer-science computation-theory

19
推荐指数
2
解决办法
7679
查看次数

杀死名称以特定字符串开头的缓冲区

这是我的问题:我使用Emacs并获得大量无用的缓冲区,如*Messages*或*Completions*.

我想绑定\ Cy来关闭所有以*开头的缓冲区,除了*shell*(和*shell*<k>)缓冲区.

为此,我想在我的.emacs文件中添加一些Emacs-Lisp:

(defun string-prefix s1 s2
  (if (> (string-length s1) (string-length s2)) nil
    (string=? s1 (substring s2 0 (string-length s1))) ))

(defun curry2
  (lambda (f)
    (lambda (x)
      (lambda (y)
    (f x y) ))))

(defun filter
  (lambda (f l)
    (if (null? l) '()
      (let ((rest (cdr l)))
    (if (f (car l)) (cons (car l) rest)
      rest) ))))


(defun kill-useless (arg)
  (interactive "p")
  (map 'kill-buffer
       (filter
    (not ((curry2 string-prefix) "*shell*"))
    (list-buffers)
    ) ))

(global-set-key "\C-y" 'kill-useless)
Run Code Online (Sandbox Code Playgroud)

我已经测试string-prefixcurry2 …

lisp emacs elisp

15
推荐指数
3
解决办法
2688
查看次数

在Scheme中定义新数据类型

我首先需要提一下,我对Scheme很新,因此,下面的问题可能没有多大意义.

在学校,我们已经定义了代数数据类型,它们通常具有一个无效的构造函数和一些内部/外部的构造函数.

在这种特殊情况下,我感兴趣的是一个BTree二叉树类型(也许平衡,在未来的迭代),我想类似这样是哈斯克尔如何对待构造函数.我曾经看到过如何实现树方案,这里例如,但这不是我想要的.

我不想只是围绕列表做一个包装器.我只想写下这样的东西:

nil: -> BTree
node: BTree x T x BTree -> BTree
Run Code Online (Sandbox Code Playgroud)

然后让它知道我的意思:

flattenTree: BTree -> List
Run Code Online (Sandbox Code Playgroud)

然后,我将定义它被(假设left,right,key被定义):

(define flattenTree
  (lambda (t)
    (node (flattenTree (left t))
          (key t)
          (flattenTree (right t)))))
Run Code Online (Sandbox Code Playgroud)

另外,我欢迎有关正确缩进我的计划代码的建议......(并且请加以修改)

scheme functional-programming algebraic-data-types

5
推荐指数
1
解决办法
3268
查看次数