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

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

新規登録して質問してみよう
ただいま回答率
85.47%
アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

Q&A

解決済

7回答

15487閲覧

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

kazu-.

総合スコア34

アルゴリズム

アルゴリズムとは、定められた目的を達成するために、プログラムの理論的な動作を定義するものです。

0グッド

1クリップ

投稿2018/10/20 11:39

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/10/20 11:53 編集

どのようなアルゴリズムか簡単にでも書いてあるといいかもしれません。取り組み方のアドバイスになりますが、まずは、プログラミングなしで、自分がそのアルゴリズムをどう解くかを考えてみてはどうでしょうか。その解き方というのは、パッと解けるわけではなく、どのようにか順序立てて解いてるわけですよね。それをコードに直せばいいかと。また、仕事に関してですが、バイトなどしてみてはどうでしょう。とはいえ、もし超初心者であればすぐにとはいかないかもしれませんが。専門学校であれば、伝手ぐらいありそうですが。
kazu-.

2018/10/20 11:54

配列からアルゴリズムがよくわからなくなりました。友達のを参考にして、自分なりの変数にしてから解いてくのも良いでしょうか?どう動いでるのかトレースするって感じです。
退会済みユーザー

退会済みユーザー

2018/10/20 12:10

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

2018/10/20 12:19

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

退会済みユーザー

2018/10/20 12:32

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

回答7

0

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

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

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

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

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


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

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

  • 講師や教科書の説明

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

  • プログラミング

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

  • 日本語

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

投稿2018/10/20 12:58

編集2018/10/20 13:11
hayataka2049

総合スコア30933

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

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

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

投稿2018/10/20 11:49

episteme

総合スコア16614

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

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

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

よくある問題で、

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

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

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

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

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

投稿2018/10/22 01:13

ttyp03

総合スコア16998

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

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

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

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

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

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

投稿2018/10/20 12:31

KojiDoi

総合スコア13671

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kazu-.

2018/10/20 12:39

全て理解する必要はないという事でしょうか??
episteme

2018/10/20 12:51

全てなんてどだい無理。
KojiDoi

2018/10/20 12:55

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

2018/10/20 13:00

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

2018/10/20 14:19

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

0

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

投稿2018/10/20 19:57

Orlofsky

総合スコア16415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

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

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

投稿2018/10/20 13:06

pepperleaf

総合スコア6383

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

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

投稿2018/10/22 11:58

mitsu-wan

総合スコア136

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問