标签: halting-problem

所有正则表达式都停止了吗?

是否有任何正则表达式,对于某些输入字符串,将永远搜索匹配?

regex halting-problem

12
推荐指数
2
解决办法
1272
查看次数

"查找给定二进制文件中的所有代码等同于停止问题." 真?

刚刚阅读有关模拟器和声明的高度投票的问题

已经证明,找到给定二进制文件中的所有代码等同于停止问题.

真的困在我身边.

当然不可能是真的吗?这不仅仅是一个大的依赖图吗?

非常感谢对此声明的进一步了解.

computer-science emulation halting-problem p-np

9
推荐指数
2
解决办法
2357
查看次数

自动且确定地测试关联性,交换性等功能

是否有可能构造一个更高阶函数isAssociative,它接受两个参数的另一个函数并确定该函数是否是关联的?

类似的问题,但对于其他属性,如交换性.

如果这是不可能的,有没有办法用任何语言自动化它?如果有我感兴趣的Agda,Coq或Prolog解决方案.

我可以设想一个强力解决方案,它检查每个可能的参数组合,永远不会终止.但在这种情况下,"永不终止"是一种不受欢迎的财产.

haskell halting-problem associativity higher-order-functions commutativity

7
推荐指数
2
解决办法
404
查看次数

是否发现C/C++代码中的指针静态等效于HaltingΡroblem?

我并没有深入根植于静态代码分析的正式方面,因此这个问题.

几年前,我读到使用静态代码分析区分代码和数据等同于暂停问题.(引用需要,但我不再拥有它了.Stackoverflow在这里这里有线程.)至少对于基于冯诺依曼架构的常见计算机架构,其中代码和数据共享相同的内存,这似乎是有意义的.

现在我正在研究C/C++代码和指针分析的静态分析; 该程序不执行.不知怎的,我有一种感觉,静态跟踪指针值的所有创建和使用类似于停止问题,因为我无法确定内存中的给定值是否是指针值,即我无法通过指针值跟踪指针值的值记忆. 别名分析可能会缩小问题范围,但面对多线程代码似乎变得不那么有用了.

(人们甚至可以考虑跟踪任意值,而不仅仅是指针:为任何给定的"有趣"值构建一个完整的值流似乎等同于停止问题.)

由于这只是一种预感,我的问题是:我可以参考更正式的发现吗?我错了吗?

c c++ pointers static-analysis halting-problem

7
推荐指数
1
解决办法
453
查看次数

是不是可能不可能完全一样的mfix?

因为Nothing >>= f = Nothing对于每一个f,以下微不足道的定义适用于mfix:

mfix _ = Nothing
Run Code Online (Sandbox Code Playgroud)

但这没有实际用途,因此我们有以下非全面定义:

mfix f = let a = f (unJust a) in a where
    unJust (Just x) = x
    unJust Nothing = errorWithoutStackTrace "mfix Maybe: Nothing" 
Run Code Online (Sandbox Code Playgroud)

如果这个-clause不会停止,那么mfix f返回会很好.(例如,) 这是不可能的,因为暂停问题无法解决?Nothingletf = Just . (1+)

monads haskell halting-problem maybe fixpoint-combinators

7
推荐指数
1
解决办法
153
查看次数

停止问题是否有"足够好"的解决方案?

众所周知,暂停问题不能有一个明确的解决方案,一个是a)返回true <==>程序确实停止了,b)处理任何输入,但我想知道是否有足够好的解决方案来解决问题,那些可以完美地处理某些类型的程序流程,或者能够识别何时无法正确解决问题,或者能够正确地解决问题,等等......

如果是这样,他们有多好,他们依赖什么想法/限制?

halting-problem

6
推荐指数
1
解决办法
3309
查看次数

自动计算终止算法的算法时间复杂度

这里有很多关于SO的相关问题,但他们都要求编写一个程序来计算任意算法的复杂性(这显然是不可判定的).我愿意对输入做出以下限制:

  1. 算法终止
  2. 该算法纯粹是功能性的

问题是,是否可以编写程序来通过静态分析来计算这种算法的时间复杂度?如果输入算法未终止,则程序行为未定义(可能会崩溃,返回谎言或无法终止).

big-o computer-science code-analysis halting-problem time-complexity

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

uncidable实例如何实际挂起编译器?

当我第一次阅读严肃的批评时-XUndecidableInstances,我已经完全习惯了它,将其视为仅仅删除了令人讨厌的限制Haskell98必须使编译器更容易实现.

事实上,我遇到了大量需要不可判定实例的应用程序,但没有一处它们实际上导致任何与不可判定性相关的问题.卢克的例子存在问题,原因完全不同

class Group g where
  (%) :: g -> g -> g
  ...
instance Num g => Group g where
  ...
Run Code Online (Sandbox Code Playgroud)

- 好吧,这显然会被任何适当的实例重叠Group,所以不可判断性是我们最不担心的事情:这实际上是不确定的!

但公平地说,我自己保留了"不可判断的实例可能会让编译器挂起".

当我在CodeGolf.SE上阅读这个挑战时获得它,请求代码无限地挂起编译器.嗯,听起来像是不可判断的实例的工作,对吧?

事实证明我无法让他们这样做.以下编译,至少从GHC-7.10开始:

{-# LANGUAGE FlexibleInstances, UndecidableInstances #-}
class C y
instance C y => C y
main = return ()
Run Code Online (Sandbox Code Playgroud)

我甚至可以使用类方法,它们只会在运行时引起循环:

{-# LANGUAGE FlexibleInstances, UndecidableInstances #-}
class C y where y::y
instance C y => C y …
Run Code Online (Sandbox Code Playgroud)

haskell halting-problem typeclass undecidable-instances

5
推荐指数
2
解决办法
324
查看次数

控制器动作被调用两次

我注意到,我的控制器的"索引"动作被调用了两次.

该行动具有以下结构:

def index

  if params[:tags].nil?
     # [fork #1] just return the whole collection of model
     @items = Item.all
  else
     # [fork #2] filter items by tags
     @items = Item.select_by_tags params[:tags]
  end

  # Another operations with @items
  # The result will be incorrect, because, when tags in params are specified,
  # controller action will be first executed for fork #2, and then for fork #1.
  # In view, i get @items from fork #2 and result of THIS piece of …
Run Code Online (Sandbox Code Playgroud)

action controller ruby-on-rails halting-problem

4
推荐指数
1
解决办法
2803
查看次数

Java:返回对象的迭代方法

出于好奇,我来写下面的方法:

public Object getObject() {
    return this.getObject();        
}
Run Code Online (Sandbox Code Playgroud)

为什么Java允许我写这个?这种方法永远不会返回任何Object并导致a StackOverflow Error.

java recursion halting-problem

4
推荐指数
1
解决办法
238
查看次数