7

现在我是一名程序员,最近发现他在数学方面有多糟糕,并决定从那时起专注于它,所以如果我的问题侮辱了你的智商,我深表歉意

在数学中,是否有编程中使用的字符串的概念?即字符的排列。

例如,假设我想将以下内容转换为数学符号:

let s be a string of n number of characters.

原因是我想使用该表示来查找有关 string 的其他内容s,例如它的长度:len(s)

您如何在数学中正式表示这样的事情?


说得更实际一些,可以这么说,假设我想从数学上解释这样一个函数:

fitness(s,n) = 1 / |n - len(s)|

或者以更“编程友好”的方式编写:

fitness(s,n) = 1 / abs(n - len(s))

我用这个函数来解释给定 GA 的适应度函数是如何工作的;问题是关于查找包含 5 个字符的字符串,我需要根据上述函数给出的适应度分数按升序对解决方案进行排序。

所以我的问题是,你如何用数学符号表示上述伪代码?

4

2 回答 2

9

您可以使用语言理论的符号,它用于讨论常规语言、上下文无关语法、编译器理论等。快速概述:

  • 一组字符称为字母表。你可以写:“让A是 ASCII 字母表,一个包含 128 个 ASCII 字符的集合。”

  • 字符串是一个字符序列。ε 是空字符串。

  • 一组字符串正式称为一种语言。一个常见的说法是,“让sL是语言L中的一个字符串”。

  • 连接字母会产生一组字符串(语言)。A表示所有 1 字符的字符串,A A,也写作A 2,是所有两个字符串的集合。A 0是所有长度为零的字符串的集合,并且恰好是A 0 = {ε}。(它只包含一个字符串,即空字符串。)

  • A *是特殊符号,表示字母表A上所有字符串的集合,长度不限。也就是说,A * = A 0A 1A 2A 3 ... 。您可以从正则表达式中识别出这种表示法。

  • 对于长度,使用绝对值条。字符串s的长度为 | 小号|。

所以对于你的陈述:

设 s 为 n 个字符的字符串。

你可以写:

A是一组字符,sA nn 个字符的字符串。s的长度为 | 小号| = n

于 2011-04-22T13:57:14.487 回答
0

从数学上讲,fitness(s, n)只要len(s)定义明确,您就可以很好地解释。

在 CS 文本中,集合S上的字符串s被定义为S的元素的有限有序列表,其长度通常写为|s| - 但这只是符号,不会改变定义背后的(数学)含义,这很清楚您是如何编写它的。fitness

于 2011-04-22T13:38:42.813 回答