以代数方式表示代码

Der*_*unk 5 math pseudocode notation

我有一些小算法,我想在一篇论文中写出来.它们相对简短,简洁.然而,我不想用伪代码(àlaCormen甚至Knuth)编写它们,而是想写出它们的代数表示(更线性和更好的LaTeX渲染).但是,如果有什么东西,我无法找到关于此的最佳表示法的资源:例如,我如何表示循环?如果?在列表中添加元组?

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

谢谢.

编辑:谢谢,人们.我认为我在表达这个问题方面表现不佳.这里又说了一遍,希望我说得更清楚:在数学符号中讨论循环和if-then子句的常用符号是什么?例如,我可以$acc \leftarrow acc \cup \langle i,i+1 \rangle$用来表示列表的"添加"方法.

jas*_*son 8

不要这样做.当你阅读关于算法的论文时,你偏离了人们期望看到的东西.你应该遵循预期的做法; 你的想法更有可能获得他们应得的关注.在罗马做到入乡随俗.

在LaTeXed纸张中格式化代码(或可能是伪代码)非常容易.例如,请参阅LaTeX中的格式化代码.

  • @Dervin Thunk:如果它适用于统计学家,他们更有可能找到伪代码,然后用一些深奥的符号来表示紧凑格式的算法. (4认同)
  • @Jason:再次,抱歉,但这不是我正在寻找的答案.你必须给我一些信任.我一生都在写作,为了生计,我有博士学位,并且一直在写论文.如果我问一个问题,我通常会期待一个答案,而不是关于如何完成工作的建议.这就是为什么我不接受你的建议作为答案. (4认同)
  • 此外,我确实需要一个问题的答案,而不是建议做什么:( (3认同)

Jas*_*rff 7

我经常用数学符号看if语句.循环的通常情况是递归关系,或者等效地,递归定义的函数.

以下是维基百科上定义Ackermann函数的方法,例如:

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

这张照片很不错,因为它感觉数学风格,但你可以用几乎完全按照书面形式输入并有一个实现.并非总能实现这一目标.

与循环相对应的其他数学符号包括用于求和的Σ-表示法集合构建器表示法.

我希望这回答了你的问题!但如果你的目的是描述某些事情是如何完成并让某人理解的话,我认为假设数学家更愿意看到方程式可能是错误的.我不认为它们是可互换的工具(尽管图灵等价).如果您的算法涉及可变数据结构,则程序代码可能比解释它的方程式更好.