Math 代数表示代码

Math 代数表示代码,math,pseudocode,notation,Math,Pseudocode,Notation,我有一些小算法,我想写在一篇论文里。它们相对简短。但是,我不想用伪代码来编写它们(克拉·科曼,甚至是克努特),而是想编写它们的代数表示(更线性、更好的乳胶渲染)。然而,我找不到关于这方面的最佳符号的参考资料,如果有什么:例如,我如何表示循环?如果?向列表中添加元组 你们有没有遇到过这个问题,并以某种方式解决了它 谢谢 编辑:谢谢大家。我想我在这个问题的措辞上做得很差。这里再次提到,希望我能说得更清楚:在数学符号中,谈论循环和if-then子句的常用符号是什么?例如,我可以使用$acc\lefta

我有一些小算法,我想写在一篇论文里。它们相对简短。但是,我不想用伪代码来编写它们(克拉·科曼,甚至是克努特),而是想编写它们的代数表示(更线性、更好的乳胶渲染)。然而,我找不到关于这方面的最佳符号的参考资料,如果有什么:例如,我如何表示循环?如果?向列表中添加元组

你们有没有遇到过这个问题,并以某种方式解决了它

谢谢


编辑:谢谢大家。我想我在这个问题的措辞上做得很差。这里再次提到,希望我能说得更清楚:在数学符号中,谈论循环和if-then子句的常用符号是什么?例如,我可以使用
$acc\leftarrow acc\cup\langle I,I+1\rangle$
来表示列表的“添加”方法。

类似的描述?

您可以看看Haskell。Haskell在latex中格式很好,有一个很好的代数语法,您甚至可以编译一个包含Haskell的latex文件,只要代码包装在
\begin{code}
\end{code}
中。请参见此处:。可能还有其他语言的识字编程工具。

我会复制Knuth。在计算机科学领域,很少有人比他更懂得如何进行交流。

?唯一的问题是很少有人能读它。

不要这样做。当人们阅读一篇关于算法的论文时,你偏离了他们的预期。你应该遵循预期的实践;你的想法更有可能得到应有的关注。入乡随俗


在过期的论文中格式化代码(或伪代码,可能是)非常容易。例如,请参见。

Lisp最初是作为计算模型的数学符号,因此讲师将拥有比图灵机更好的工具。偶然发现,它可以在汇编语言中实现——编程语言lisp就是这样诞生的

但我不认为这是您真正想要的,因为lisp描述的计算模型没有循环:而是使用递归。该语法源自代数,其中大括号表示求值并替换结果。事实上,lisp的计算模型基本上就是代换——代数本质上就是代换

事实上,像Lisp、Haskell和Erlang这样的大多数函数式语言都是从数学中派生出来的。Haskell实际上是证明lambda演算可用于实现类型系统的结果。所以哈斯克尔,就像Lisp一样,是从纯数学中诞生的。但同样,语法不是您可能会习惯的

你当然可以向数学家解释Lisp和Haskell语法,他们会把它当作一个“游戏”。循环、递归和条件语句等语言结构可以根据游戏规则进行验证,而不是像其他语言一样盲目实现。这将引导你进入组合电子学的领域,这是数学的另一个分支。事实上,在组合电子技术中,甚至数字的概念也可以根据游戏规则构建,而不是作为语言的一部分(谷歌教堂数字)

因此,如果需要,可以看看Lisp/Scheme、Erlang和Haskell。Erlang的语法特别接近您想要的:

add(a,b) -> a + b
但我的建议是用类似C的伪代码编写。这是编程语言中的最低公分母。具有相当容易理解和清晰的语法。函数语法甚至源于数学中的函数。还记得
f(x)

另外,数学家习惯于写C,统计学家习惯于写C(尽管他们通常更喜欢R),物理学家习惯于写C,程序员至少习惯于看C(我认识一些从未接触过C的人)


事实上,把它擦掉。你提到你的目标受众是统计学家。写在

我经常看到用数学符号表示的表达式。循环通常是一个递归定义的函数,或等价的函数

以下是Wikipedia上的定义,例如:

0,n=0;如果m>0且n>0,则A(m-1,A(m,n-1))

这张图片很好,因为它给人一种数学的感觉,但你可以清楚地把它输入到几乎完全一样的文字中,并有一个实现。这并不总是可能实现的

与循环相对应的其他数学符号包括和


我希望这能回答你的问题!但如果你的目的是描述事情是如何完成的,并让别人理解,那么我认为假设数学家更喜欢看方程可能是错误的。我认为它们不是可互换的工具(尽管图灵等价)。如果您的算法涉及可变数据结构,则在解释过程代码时,可能会比方程更好。

一般循环的符号不存在;通常您将使用“如果”表示,并使用“将元组添加到列表中”

然而,总的来说,有点罗嗦并不一定是件坏事——有时,特别是对于复杂的算法,最好用简单的英语,使用示例和图表来解释。对于非编码者来说,这是加倍正确的


想一想:当你读一本关于欧几里德GCD算法的数学教科书,或者《埃拉托斯提尼筛》时,它是怎么写的?通常,算法本身是散文,而算法的证明是数学符号所在的地方。

这很有趣,但不完全是这样。我正在研究表达通用程序的数学方法ming构造。参见上面的示例。谢谢。是的,你是对的。然而,这篇论文不是由算法专家阅读的,而是由统计学家阅读的。此外,我确实需要一个问题的答案,而不是关于如何做的建议:(@Dervin Thunk:如果是针对统计的话