7

今、私は最近、数学に関して彼がどれほど悪いかを発見し、その時点から少し焦点を合わせることにしたプログラマーです。私の質問があなたの知性を侮辱する場合は、お詫び申し上げます

数学では、プログラミングで使用される文字列の概念はありますか?つまり、文字の順列です。

例として、以下を数学表記に変換したいとします。

let s be a string of n number of characters.

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文字を含むセット」と書くことができます。

  • 文字は文字のシーケンスです。εは空の文字列です。

  • 文字列のセットは、正式には言語と呼ばれます。一般的なステートメントは、「s∈L言語Lの文字列としますです。

  • アルファベットを連結すると、文字列(言語)のセットが生成されます。Aはすべての1文字の文字列を表します。AAは、A 2とも表記され 2つの文字列すべてのセットです。A 0は、長さがゼロのすべての文字列のセットであり、正確にはA 0 ={ε}です。(これには、空の文字列という1つの文字列が含まれています。)

  • *は特殊表記法であり、任意の長さのアルファベットA上のすべての文字列のセットを表します。つまり、A * = A0∪A1∪A2∪A3 ...。_ _ _ _ _ _ _ _ _ この表記は正規表現からわかるかもしれません。

  • 長さには絶対値バーを使用します。文字列sの長さは|です。s |。

だからあなたの声明のために:

sをn文字の文字列とします。

あなたは書くことができます:

Aを文字セットとし、 s∈Anをn文字の文字ますsの長さは| 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 に答える