アプリ版:「スタンプのみでお礼する」機能のリリースについて

「パターン認識」という授業のレポートでアルゴリズムを考えよという課題があるのですが、アルゴリズムとはどういったものなのでしょうか?また、どう記述すればいいのでしょうか?教えてください。よろしくお願いします。

A 回答 (4件)

アルゴリズムの意味は皆さんがご回答されている通りで良いと思います。



では、身近な事でアルゴリズムの具体例を出しましょう。
(かなり単純化したアルゴリズムですし、本来の記述法は無視しています)

【テーブル上のコップを持ち上げる】

 コップの場所を認識する
    ↓
 腕を動かす
    ↓
 腕はコップの近くまで到達したか?
    ↓(Yes)       ↓(No)
 腕の動きを止める   「腕を動かす」へ戻る
    ↓
 手のひらを広げる
    ↓
 手のひらでつかめるように腕の位置を調整する
    ↓
 コップをつかむ為、手のひらをすぼめる
    ↓
 指先までコップに触れたか?
    ↓(Yes)       ↓(No)
 つかむ力を加減する  「手のひらをすぼめる」へ戻る
    ↓
 腕を移動させる
    ↓
 コップが傾いていないか?
    ↓     ↓(No)          
    ↓(Yes)  コップの傾きを調整
    ↓     ↓
 腕は目的の場所まで動いたか?
    ↓(Yes)      ↓(No)
 処理終了       「腕を移動させる」へ戻る

人間が無意識にしている動作も、機械に正しくやらせようと思うと、
このような(本当はもっと細かな)手順を機械に教えなければなりません。
アルゴリズムに誤りがあったり、穴があったりすると
結果が間違ったものになってしまうのです。

上の例で言えば
コップの場所を認識しなければ腕を動かしたときにコップを倒してしまうかもしれないし、
指先までコップに触れたかチェックしないとコップを握りつぶしてしまうかもしれないし、
コップが傾いていないかチェックしなければ水がこぼれてしまうかも知れないのです。

注意しなければならないのは、結果に問題が出ないように
あらゆる可能性を考慮したアルゴリズムを作ることでしょう。
例えば割り算のアルゴリズムなら割る数が0にならないようにチェックするとか。
    • good
    • 0
この回答へのお礼

回答をしていただき、どうもありがとうございました。具体例までつけていただき、分かりやすい回答でとても助かりました。

お礼日時:2004/12/12 12:08

アルゴリズムの意味は、直観的には#1,#2の方の回答でいいと思います。


厳密には有限時間で停止することが保障されていないとだめで、
もっと厳密にはチューリングマシンの状態遷移図と等価なものという定義になっています。
(パターン認識とかをやる分野を勉強されているなら、この厳密な定義も教養として知っておいてもいいでしょう)

で、どう書けばいいかについては、#2の方が言われているような記述方法でもいいですが、特に指定がないなら自然言語(日本語とか英語とか)でもいいと思いますよ。

最も有名な「アルゴリズム」の一つである「ユークリッドの互除法」などを調べてると、感覚がつかめると思います。
    • good
    • 0
この回答へのお礼

回答をしていただき、どうもありがとうございました。回答を元にもう少し調べてみたいと思います。

お礼日時:2004/12/12 12:05

> アルゴリズムとはどういったものなのでしょうか?



直感的には、「与えられた問題を解決するための明確な手順」ということになります。

> どう記述すればいいのでしょうか?

アルゴリズムの記述方法としては、
・フローチャート
・NSチャート
・PAD
・擬似コード
などがあります。

課題に関してですが、単に「アルゴリズムを考えよ」という出題はされないように思います。

何かパターン認識のある問題を提示され、「この問題を解くアルゴリズムを考えよ」という内容ではないでしょうか?

この回答への補足

回答をしていただき、どうもありがとうございました。確かにおっしゃるとおり、「○○を○○として認識するアルゴリズムを書け」のような問題でした。ただ、あまり細かい問題の内容を書き込んでしまうと問題の答えを聞いているような形になってしまい、いけない思ってこのような質問になってしまいました。どうもすみません。

補足日時:2004/12/12 12:04
    • good
    • 1
この回答へのお礼

回答にある記述方法についてもう少し詳しく調べたいと思います。どうもありがとうございました。

お礼日時:2004/12/12 12:10

辞書によりますと・・・


コンピュータを使ってある特定の目的を達成するための処理手順。アルゴリズムをプログラミング言語を用いて具体的に記述したものをプログラムという。
と書いてあります。

僕はC言語をやっていたのですが、よくアルゴリズムという単語を使いました。
    • good
    • 0
この回答へのお礼

回答をしていただき、どうもありがとうございました。イメージをつかむことが出来ました。

お礼日時:2004/12/12 11:57

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!