質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.58%

アルゴリズムがわからない

解決済

回答 7

投稿

  • 評価
  • クリップ 1
  • VIEW 6,953

kazu-.

score 34

情報処理系の専門学校に通い始めて半年、プログラミングの学習と合わせてアルゴリズムの問題を学習しているのですが、サイコロ問題含め、アルゴリズムをなかなか理解できません。誰かの回答を参考にしないとアルゴリズムの書き始めもわからないです。実際IT系の企業で働く上でアルゴリズムが苦手だとIT系で働くことは無理ですか?不安が不安を呼び、アルゴリズムに苦手意識を持ってしまいました。苦手意識を持たないように頑張ってますが、わからない度に一つの問題で二時間とかかります。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • 退会済みユーザー

    退会済みユーザー

    2018/10/20 21:10

    配列のアルゴリズム…バブルソートとかなんちゃらソートとかでしょうか。動きをトレースしてアルゴリズムを理解するのはありだとおもいます。名前が妥当であれば変えてみてもいいかもしれませんが、一から書けるよう練習はしてみたほうがいいとは思います。kazu-.さんの詰まっているポイントを分解すると、(1)アルゴリズムそのものの理解と、(2)その手順をプログラミングに書き換える という2点になるかなと思います。

    キャンセル

  • kazu-.

    2018/10/20 21:19

    アルゴリズムを理解するためにはまた一から勉強し直さなきゃいけないですかね?また、仕事に入ってからアルゴリズムを学んで行く事はあるのでしょうか?

    キャンセル

  • 退会済みユーザー

    退会済みユーザー

    2018/10/20 21:32

    一から勉強しなおさなきゃならないと思うのであれば、時間のあるうちに取り組んだほうが良いとは思います。ただ、一からかける練習をしてみたほうがいいというのは、プログラミングの練習とアルゴリズムを理解する練習のためです。仕事によりますが、私はソートのアルゴリズムを書いたことはありません。ライブラリで用意されているので。ただ、ソートのアルゴリズムの一部を書くことはあります(要素Aと要素Bどちらを前にして、後ろにするかという判別する部分)。学校の担任や進路相談役に相談してみてはどうでしょう。

    キャンセル

回答 7

+14

まず大前提ですが、アルゴリズムは誰にでも理解できます。

ルービックキューブを想像してください。上手な人は、直感的にこねこねして解いてしまうかもしれません。はたから見ると何やってるのかわかりません。こういうのはアルゴリズムとは普通は言えません。

そうではなくて、解いていく最善の方法をちゃんと言語で定式化しましょう、というがアルゴリズムです。ルービックキューブなんか生まれてから一度も触ったことがない人でも、アルゴリズムを書いたマニュアルを見ながらグリグリ回せばちゃんと揃えられるようにする訳です。

そこにセンスとか才能みたいなものが介入する余地はありません。説明を読んで理解し、その通りに手を動かせば(コードを書けば)少なくとも実現・実行・実装はできる。それがアルゴリズムです。

(ただし、理解に必要な前提知識と言語能力がないと理解できないので、「説明を読んで理解し」のハードルは意外と高かったりします。また、理解にどれくらい時間がかかるとか、どれくらい複雑なものまで覚えられるかとかは個人差があるかもしれません)
(『新しいアルゴリズムを発明する』のは、既存のアルゴリズムを理解して活用するのとはまた異なった才能、という可能性は大いにあります。とはいえ、教育を受けている段階でそれを要求されることはないので、気にしなくて大丈夫です)


となると、「アルゴリズムがわからない」という状況は、むしろ「アルゴリズム以外の何かがわからない(のでアルゴリズムも結果的にわからない)」と捉えた方が適当だと、私は考えます。

「わからないもの」の候補として可能性があるものを以下に列挙。

  • 講師や教科書の説明
    通っている学校の教え方が悪いパターン。これはありえますね。そうかもしれないと思うのなら、良い教材を自分で探してください。

  • プログラミング
    プログラムを書く能力がない、配列やメモリ領域といったプログラミングをやる上で理解しておかないといけない概念に対する理解がない、など。これは「アルゴリズム以前の問題」です。まずはプログラミングの基礎を固めてください。

  • 日本語
    アルゴリズムの説明を何回読んでも理解できない、というような場合、日本語が読めていない可能性があります。いわゆる国語力不足です。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+6

実際IT系の企業で働く上でアルゴリズムが苦手だとIT系で働くことは無理ですか?

無理じゃないけど、どっかに落ちてるコードを基に書いてばっかじゃつまんないでしょ。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

checkベストアンサー

+5

アルゴリズムという言葉に惑わされすぎている感があります。
ひとまずアルゴリズムは置いといて、プログラムを作りはじめるとき、手が動かない人は何が問題なのか、考えてみました。

プログラム脳になっていない

よくある問題で、

  • ある値を1増やす
  • ある値とある値を入れ替える

こんな単純なことでもプログラム未経験者は難問です。
つまりプログラムを行うにあたって変数という現実の世界にはないものの扱い方に慣れていない。
プログラム脳やプログラマ脳、あるいはプログラミング脳で検索してみてください。

処理を論理的に考えられない

どんな処理でも、まずは論理的に、順番に、人間が処理できる方法で、人に説明出来る言葉に置き換える必要があります。
それを今度はプログラムに書き換えるのです。
最初の論理的に考えること自体はコンピューターとは無縁なことです。
国語の問題と言ってもいい。

「アルゴリズムがわからない」という質問は、新しいアルゴリズムを考案するのか、既存のアルゴリズムの実装の仕方がわからない、のどちちらかになると思います。
どちらかといえば後者でしょう。
となれば尚更そのアルゴリズムを理解する力(国語力)が必要になります。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+5

何も新奇なアルゴリズムをコード化するばかりが「IT系の仕事」ではないと思うのですよ。

苦手意識を克服しようという向上心はいいのですが、現実的にそういう気力はなかなか長続きしないです。アルゴリズムが苦手なら、得意・好きと思える分野や仕事は他にありませんか? 苦手をなくすより得意をのばす方向で進路を定めることを考えてみてはどうでしょう。

メジャーといえる言語はどれでも既に誰かが作った素晴らしいライブラリがたくさんあって、それを組み合わせてプログラムを作っていく感じですよね。バブルソートアルゴリズムを復習して自分でゼロから組んでみようなんてことは、勉強としてならともかく実践の場ではあまりやらないのではないでしょうか。そうなると重要なのは「アルゴリズムを理解すること」や「コードを早く書けること」より、むしろ「情報収集能力」や「組み合わせ能力」ですよね。

また、IT系の職種に行くからと言って、IT系の知識だけを増やせばいいというものでもありません。私は生物系の人間で、いまは遺伝子解析にコンピュータが必須の時代ですから、プロのSEさんと仕事をすることも自分でプログラムを組むこともあります。その経験から言えば、こまかなアルゴリズムを知っているよりも、「こちらのやりたいことを理解してくれる(そして、別に泥臭い手法ででもいいから動くプログラムを作ってくれる)」人の方がありがたいのですよ。

このように、アルゴリズムに親しんでいることはたくさんの要素のうちの一つであるにすぎず、セールスポイントは他にいくらでも作ることができるはずです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/10/20 21:55

    現実的に世の中は勉強のネタであふれかえっています。30年前には誰も想像できなかったペースで新しい知見が生み出され数多のサービスが生まれ、しかし人間の頭の性能は変わっていません。どこかで割り切りはしないといけません。

    キャンセル

  • 2018/10/20 22:00

    「この世界に存在するアルゴリズムをすべて理解する必要があるか」という問いならNoで良いですが、
    この場合「情報処理系の専門学校のアルゴリズムの講義がよくわからなくて、すべて理解しなくても大丈夫ですか?」という問いなので、「カリキュラムの範囲は理解した方が良いんじゃないでしょうか、そんな高尚な難しい内容はないと思いますよ」と答えるべきと思います

    キャンセル

  • 2018/10/20 23:19

    私の回答は質問の趣旨からは少し外れているのかもしれませんけど、そもそもどうしてこういう質問が出てくるのかという観点からこういう回答に至りました。わたしは専門学校に通ったことはないので、講義の内容について完全理解の必要性があるかまではコメントできません。

    キャンセル

+2

アルゴリズム入門 などググれば簡単に見つかります。一度でも調べたことがありますか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+1

近くのお店に買い物に行く手順を考えるのアルゴリズムです。
難易度に差はあるにしても。
難しいものだけが、アルゴリズムと考えていませんか?
お仕事に役立てる為には、お店に行く手順よりも難しい事を考える必要がある事も事実ですが、最初から、難しい事を考えると大抵の人は挫折すると思います。

なお、hayataka2049さんの「「わからないもの」の候補として可能性があるもの」については同意です。あと、相手の人が何を期待しているのか考えるのは、もっと難しいですが。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

苦手意識が先行してしまっているようですね。
「アルゴリズムを理解する」といっても、色々な要素がありますので、
まずは、問題を解く際に自分が行き詰まってしまうのはどこなのかを客観的に知ることが大切だと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.58%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る