【问题标题】:Constraint network in Objective-CObjective-C 中的约束网络
【发布时间】:2012-04-30 10:17:05
【问题描述】:

我正在 Mac OS X 10.7 上编写一个 Objective C 应用程序,我需要解决一个算术约束问题。 例如,我有一个矩形的两个方程,a 和 b 是边的长度:

P=2(a+b) (perimeter)
A=ab     (area)

我将此问题确定为约束满足问题。 用户应该能够指定 a 和 A,并让求解器计算 b 和 P。 我在http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-22.html#%_idx_3516 中找到了一个实现,但我不确定是否有一种干净的方法可以从Objective C 调用LISP 程序。我正在寻找可以为我提供一个Objective C 接口到求解器的东西,或者也许将 LISP 程序编译成一个 Objective C 库。否则,一个极简的开源约束求解器会满足我的需求。

【问题讨论】:

  • Clozure Common Lisp 有一个 Objective C 桥,以及大量关于将 CCL 连接到 OS X 环境的文档。

标签: objective-c macos lisp sicp constraint-programming


【解决方案1】:

实际上有人为 iOS 构建 lisp 系统。 (免责声明 - 我一生中从未使用过 lisp)

这个SO问题common-lisp-on-iphone-ios指向the funcall blog,其作者在github上有ecl-iphone-builder

这个 SO 问题:has-anyone-got-any-code-examples-of-ecl-lisp-for-iphone-development 最终到达同一目的地。

希望这对你来说是一个好的开始。

编辑

我完全错过了这不是一个 iOS 问题。

但是有人在 OSX 上运行 lisp。这个 SO 问题有一些解决方案:what-is-the-best-scheme-or-lisp-implementation-for-os-x

这个博客:common-lisp-on-mac-os-x 更详细(对我来说是谷歌的顶峰)

【讨论】:

  • 我对适用于 MacOS X 10.7 而非 iOS 的解决方案感兴趣。我会仔细研究一下,看看它是否特定于 iOS。
  • 哎呀..我的错误..我实际上打折了我看到的纯粹的 OSX 信息!但是 OSX 有 lisp 解决方案
【解决方案2】:

那本书的例子是用Scheme 写的,这是一种 Lisp 方言(有很多)。这本书有点老了,但是今天的大多数 Scheme 实现都能够执行那本书中的代码示例。有几个在 OSX 上运行的 Scheme 实现,但是书中的示例也可以很容易地移植到 Common Lisp 中——实际上只有很小的区别。不仅如此,我认为用 C/Obj-C 编写它们不会花费太多时间。书中的示例是通用编程,它们使用的 Lisp 方言并没有什么特别之处。

(Wiki 中的文章也有实现的链接,我不想宣传任何特定的内容,以免听起来有偏见——此外,我在学术界之外没有太多使用它的经验)。 em>

可能,如果您正在寻找用于证明数学定理的通用工具,那么您可以查看Coq - 这是专门针对该任务的语言。它还可以在任何 Unix 或类 Unix 操作系统上运行。

【讨论】:

    【解决方案3】:

    如果这是您需要解决的唯一问题,那就更简单了。你可以用Aa来解b

    b = A / a
    

    然后您可以使用您发布的第一个等式找到P

    【讨论】:

      【解决方案4】:

      nu 编程语言是一种 Lisp 方言,可以与 Objective-C 集成,包括嵌入到 Objective-C 应用程序中。 http://programming.nu/index

      我听说过很好的东西,但从未使用过。

      您也可以尝试将约束求解器应用程序翻译成 Objective-C。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-07-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多