これは、スタックオーバーフローに関する私の最初の質問です。簡単な背景ですが、これは学校のプロジェクトではなく、楽しみと練習と学習のためだけのものです。私はCでスペルチェッカーを作成しようとしています。私が抱えている問題は、スペルミスのある単語を置き換える可能性のある単語を考え出すことです。
また、私のコースでは、時間計算量やアルゴリズム開発などのより高いレベルのプログラミング概念に到達していないことも指摘しておく必要があります。自分が本当に求めているコンセプトには名前があるような気がするので、まだ聞いたことがないということです。
ここにある他の同様の投稿では、ほとんどの人がレーベンシュタイン距離を使用するか、基数木を横断することを提案しています。部分文字列を比較するだけで問題になるでしょうか?私が思いついた(非常に非効率的な)アルゴリズムは次のとおりです。
N
最初の文字(ここで、)を辞書の単語と比較しN = length of the misspelled word - 1
ます(システムファイルから動的に割り当てられた配列に読み込まれます)
N
スペルミスのある単語の文字と辞書の単語が一致する場合は、それを候補のリストに追加します。一致するものがこれ以上見つからない場合は、デクリメントしますN
10件の提案が見つかるまで続行するかN = 0
不格好でぎこちなく感じますが、それは私たちの教科書がこれに近づくことを示唆しているようなものです。木を横断し、効率と正確さのためにあらゆる種類の興味深いものを計算することに関するwikiの記事を読んだことがありますが、現時点ではそれらは頭に浮かびます。どんな助けでもありがたいです、そしてこれを読むために時間を割いてくれてありがとう。