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

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

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

アルゴリズム

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

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

13回答

11052閲覧

アルゴリズムを勉強するメリットとは。

carnage0216

総合スコア194

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

アルゴリズム

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

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

12クリップ

投稿2018/06/22 13:06

編集2018/06/22 13:07

質問でなくて申し訳ありません。
C言語における基礎勉強は大変重要です。
そこで質問なのですが、アルゴリズムを勉強するメリットはあるのでしょうか?
何を行う時にアルゴリズムを勉強するのでしょうか?
以前、本に載っていたのは、「機械学習、画像処理を行う上で数学的なアルゴリズムを勉強する必要がある」と書いてありました。しかし具体的な例題が書いていなかったため書いてあることが本当かどうかわかりませんでした。

私としては、例えば素因数分解のアルゴリズムを勉強したのですが、このような数学的なアルゴリズムが機械学習や画像処理にどのように使われているのか具体的に知りたいです。

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

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

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

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

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

guest

回答13

0

さすが、パソコンオタク御用達のteratailだけあって、相変わらず的外れな回答ヴァッカだな。ロボだらけじゃん。

聞かれたことをそのまま答えてるだけ。そういうのは一介の作業工がやる事。エンジニアなら客からの要求の奥にある本当の問題を見つけてその解決策を提供しないとな。

そういう観点で、満を持してするluckerお兄さんの回答は、これだ。

Q: そこで質問なのですが、アルゴリズムを勉強するメリットはあるのでしょうか?

####A: 今のレヴェルだと、アルゴリズムについて考える事は君にとってなんのメリットもないです。スケベ心出してよそ見なんかしてないで、まず、プログラミングの基本的な作法を学ぶ事だけに注力しなさい。

って事。

episteme お父さんが、

「大工さん、ノコギリとカナヅチが使えるといいことあるんですか?」
...使えないとメシが食えねぇよ。

って言ってるけど、そういうのは「家を建てるには、木を切って組み立てなきゃいけないんだよな」って事が認識できて「こんなふうに切ってこことここを繋ぎたいけどいい道具ねぇかな?」って段階になって初めて『ノコギリって物があって木が切りやすいらしい』『カナヅチってのを使うと木をつなぎ合わせる楔打ち込むのに楽らしい』って事がわかり始める。で、『Aの時は場所狭いからもっと小ぶりのノコギリねぇか?』『Bの時は足場不安定だから軽くて取り回しやすいカナヅチねぇか?』ってなる。

知識というのはそうなって初めて、意味を成してくる。

質問者がその段階にあるかどうかくらい理解できないとダメだろ、いい加減みんな。

だからお前らはいつまで経っても下っ端のコーダと大して変わらないんだよ。回答した奴の中で、マネジメントしてプロジェクト回してる奴、ちょっと手を上げてみろ。居ねぇだろ。だからダメなんだよ、おまえらは。

…って書いておくと、来週の月曜日あたりに運営からお怒りのメールが届くんだけどな。

前回はさすがにかなりお怒りだったので、今度という今度はアカバン来てもおかしくないから、この土日が最後の回答になるかも。

まぁ、なかなか楽しかった。

投稿2018/06/23 04:40

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

carnage0216

2018/06/23 06:35

確かにアルゴリズムの勉強より前にプログラミングの基本的な作法を学ぶことに集中すべきであります。 私を馬鹿にするのはいいのですが、貴重な時間を割いて解答していただいた方々に対しての暴言などは見過ごせません。 なので通報させていただきます。大変不快です。
退会済みユーザー

退会済みユーザー

2018/06/23 06:56

ほー、それは、君がかばってあげた他の回答者諸氏も、さぞお喜びだろう。 良かった良かった。
mkgrei

2018/06/23 07:00

回答のパンチがきいてんな。+1 とりあえず勉強していけばいつかメリットがわかるよ、と書いてありますよ。
退会済みユーザー

退会済みユーザー

2018/06/23 07:02

ここ、プロレスサイトらしいから、マジでパンチ出すと運営がメッチャ怒るんだぜ。
maisumakun

2018/06/23 07:42

回答は質問者だけのためではありません(-1)
退会済みユーザー

退会済みユーザー

2018/06/23 07:46

上のマイスマさんの回答が、他の誰かのためになってるとも思えないけど。
退会済みユーザー

退会済みユーザー

2018/06/23 07:49

アルゴリズが理解できれば他の誰かに成りすませます(キリッ って、何プロパガンダのつもりなの?w
退会済みユーザー

退会済みユーザー

2018/06/23 07:53

まいすまさんも、虐殺君にかばってもらうようになって、随分ヤキがまわったかな。
maisumakun

2018/06/23 08:00

あの、前から気になっていたのですが、2018/06/23 16:53のようなコメントを書き込んだことで、luckerさんに見込めるメリットはいったいどのようなものがあるのでしょうか。 技術論とてんで関係ないところで、わざわざ自分の評価を下げに行っているように見えてしまうのですが。
退会済みユーザー

退会済みユーザー

2018/06/23 08:18

こちらとしては逆に、マイスマさんの昼夜を問わぬ膨大な回答の方が、一体何のメリットがあるのか疑問でした。 何しろ、あまりの弾幕の多さに他の回答者が追随できず戦意を削がれかねない程でしたから。 マイスマさんは自分の評価を上げる事・下がる事に意味があるとお考えなのかもしれませんが、僕は、“とあるサイトのとある誰かが下した主観的な評価”の事なんてどうでもいいですね。 僕はここが仮に技術者の為のサイトであるとしたら、 1. 迷っている者の進むべき道を指し示すこと 2. 間違った方向に進んでいる者を諌めること の2つしかしませんね。 んだからまぁ、マイスマさんもそうだし、他の回答者がした回答については、ただの自分が満足するための自慰行為でしかなく、質問者の為にも、この国の技術力推進のためにもなっていないと思うので回答したまでですね。 正直、ここの運営者がそんな矜持を持って運営しているとも思っていないので、「まー、月曜日あたりアカバンシてくるかー。そしたら次は何してやろうかな?」くらいのつもりです。 別に自分にデメリットがあるとも思ってないですね。
退会済みユーザー

退会済みユーザー

2018/06/23 08:19

まー、一部のアッガイ共は、マイスマさんが回答率を上げるためにteratailからリベートをもらってるとかもらってないとか噂してたりしますが、うん、そんなのは下衆の戯言なんで、無視してますよ。ええ。
YouheiSakurai

2018/06/23 12:43

面白いから、かつ自分に害がないから+1
HogeAnimalLover

2018/06/23 14:39

ここまで過激な人も珍しい。が、一理はあります。アルゴリズムを単独で議論したって無駄です。大抵はデータ構造とセットに考える場合が普通ですし、対外的な業務の一環として考えるならばもっと大事なことは当然存在します。 話し合いの末に「これはやらない方が良い」、「費用が利益を上回る」ということが判明することも多々ありえます。私の大学時の経験では、「相手の要望が満たされないことを把握の上、この旨を隠して教授が契約を結ぼうとしていた」ということがありました。 取引相手に「契約書見直し」を提案したところ、教授が暴れまわること暴れまわること。「自分の提唱するアルゴリズムは万能だ」、「利益が出ないわけはない」とどれだけ暴れまわったことか。 結局、教授は相手側の要望など考えておらず、「自分の提唱するアルゴリズムの実績」が欲しかっただけで、ついには取引相手から契約を打ち切られる結果になりました。この原理の説明を求められて「自分が作ったものだから優れた結果が約束される」と回答したときは笑いました。
archiver

2018/06/25 14:12

言い回しはともあれ、言ってることは真っ当なので+1。 というか、この質問者さんに対してはこれくらいのことを言わないと「現実を受け止めようとしない」と思うので、いい薬だと思う(「毒」になるかもしれないが。まあ、これで心が折れるくらいなら、その程度だと思うし)。 正直、この質問者さんは甘々の甘えん坊さんなので、誰かしらこのくらいのことを言わないとダメだと思う。そもそも過去質問でも基礎力の無さを指摘されているのに、真摯に向き合わず、すぐによそ見をして脱線しているので、これまで回答に付き合ってくださっている方も呆れてるんじゃないかな。 (まさか、アルゴリズムを身につけるのにメリット・デメリットはありますかなんて質問が出るとは思わなかったよ。そんな質問をする時点で、「モノづくり」に向いてないんだろうなと思う) で、lucker氏、運営から何か来た?
catsforepaw

2018/06/26 02:41

アカバンが来るらしいとのことでコメントは控えていたのですが、来なかったようなのでコメント残しておきます。 もしQ:~A:~部分だけだったなら評価しても良かったのですが、言い方はともかく、エンジニアとか大工とかでおかしなことを書いているので私の評価は低いです。 大工の件は置いておくとして、エンジニアの観点については、エンジニアなら、まずは客から聞かれたことに答え、その上でより良い解決策があるなら提案し、選択を促す、というのが筋でしょう。聞かれたことに答えずに「こうしなさい」などと言ったら客は怒りますよ。「俺が金出してるのになんだこの上から目線なやつは」と。わざわざ顧客との信頼関係を壊すようなやり方はエンジニア(というか社会人)として不適格でしょう。 Q:~A:~は、エンジニアと客ではなく、上司と部下、あるいは先生と生徒という観点で語られるべき内容です。
退会済みユーザー

退会済みユーザー

2018/06/26 11:18

>archiver 兄さん いや、来てないっすねぇ。前回は明らかに警告文みたいなメールだったから即切ってくるかと思ってたんだけど。 ひょっとしたら、Hagex事件が重なったせいで、下手にアカバンして恨みかって刃物持って乗り込まれたらたまらんから忖度したのかも。 んなわけないのにねぇ。寺の管理人の裁定が体裁ばっか気にした偏ったものだってことくらい、とっくに分かっててやってるから。 とっくに呆れてるので今更恨みとか無い無い。
退会済みユーザー

退会済みユーザー

2018/06/26 11:39

>catsforepaw あーのさ、管理人がうるさいから低レヴェルな論理での反論やめてくれないかな? あなたさ、自分で気づいてないとおもうけど、論理疎いからね。プログラマって論理構造に詳しいから論理にも精通してると思ってるけど、ほとんどのプログラマはまともに論理構築できなくて、あなたもその一人だから。 まず1点目、「大工の件は置いておくとして」ってさ、大工の話持ち出したのは俺じゃねぇよ。文盲じゃなければちゃんと読んでコメントしてくんない? そういう例を出してる人がいるけどそれでいうならこうだろって乗っかっただけだよ。ほんと、何言ってんだよ、何見てんだよ。こんなん、言わなきゃわかんないか? 2点目、「まずは聞かれたことに答え~というのが筋でしょう。」誰が決めたの? お客様は神様です~なエンジニア? あなたさ、ただのセールスマンじゃないの?  「などと言ったら客は怒りますよ。」 怒ったからなに? 最初の話聞いた時点で「これ、客じゃないな」って判断できなかったって事? 「俺が金出してるのに」←こんなの客だと思ってるんだ、おつかれ様。  仕事は確かに必ずしも選べるわけじゃねぇよな。だが、金出してる奴が絶対上じゃなきゃいけないっていうあんたの考え方はどう考えても、エンジニアじゃねぇよ。 でな、別にいいんだよ? どんな考え方したって。 それはあんたの考え方。それ自体は悪くないよ。 だからこそあんたはおかしいわけさ。 そりゃ、ただのあんたの考え方なんだから「Q:~A:~は、エンジニアと客ではなく、上司と部下、あるいは先生と生徒という観点で語られるべき内容 “だと思います。”」って言わないと。 それが、まともな、論理のわかる人間のセリフなんだよ。あんたのは論理じゃない。 自分の勝手な都合。話になんねーの。 ほんと、調子に乗って短絡的なコメントするの、やめてくんないかな? 前にラッキーが勝手に質問立てたくせに回答してやったらなめた口調でコメントしてきて、「おまえ何だその物の言い方は? それが人に物を尋ねる態度か?」ってやんわりと言っていたら、管理人がこっちのコメントを削除して警告文送ってきやがってさ、 ほんと、ここの管理人は物事の道理ってものを全くわかってねぇから、あんま、低レヴェルな奴には関わりたくないんだよ。 あんた、5000ポイントだか稼いで自分は凄いと勘違いしてるのかもしれないけど、そりゃ、プログラマとして知識が豊富だねってだけで、人間として博識であるわけじゃねぇからそこんとこはちゃんとりかいしてくんないかな? ここの評価制度は素人をただ煽って回答に駆り立ててるだけでエンジニアとしての力量には一切関係ないから、ほんと勘違いするのは辞めたほうがいいよ。
退会済みユーザー

退会済みユーザー

2018/06/26 11:45

まーた管理人が消してきやがるだろうから、魚拓とっといた。
YouheiSakurai

2018/06/26 11:56

「いいよ。と私は思います。」とあえて書かないのは流石。勘違いしてた方が幸せor物事を成すのに有利に働く事もあるのではなかろうか、この場合における柔らかな断定的締めくくりによる功罪すらも一概には言い切れない、と私は思います。(1回しかプラス押せないのでコメントで+1)
catsforepaw

2018/06/26 13:34

luckerさん 最初からけんか腰の相手には何を言っても通じないだろうということは想定内であり、そういう人は自分の意見が否定されたと感じると激高して人格攻撃を繰り返してくるわけですが、それも想定内です。むしろ、それをちょっと期待もしていたわけであり、期待通りだったのでなかなか楽しませてもらいました。luckerさんの文章は読み物としてはなかなか面白いと思いますよ。 > まず1点目、「大工の件は置いておくとして」ってさ、 いきなり長いコメントを書くのが躊躇われたので(時間もなかったし)、前振りのつもりで書いてみました。そう書いておけば必ずそれに反応すると思っていましたから。 >> そういうのは「家を建てるには、木を切って組み立てなきゃいけないんだよな」って事が認識できて「こんなふうに切ってこことここを繋ぎたいけどいい道具ねぇかな?」って段階になって初めて『ノコギリって物があって木が切りやすいらしい』『カナヅチってのを使うと木をつなぎ合わせる楔打ち込むのに楽らしい』って事がわかり始める。 現場でその段階になって判るレベルって、そういうのは大工とは呼びません。 >> で、『Aの時は場所狭いからもっと小ぶりのノコギリねぇか?』『Bの時は足場不安定だから軽くて取り回しやすいカナヅチねぇか?』ってなる。 そんな大工がいたとしてら絶対仕事を頼みたくないですね。luckerさんのお知り合いの大工はそういう人達なのでしょうか? 大工なら当然そのための勉強と経験を積んできていて、想定されうる必要な道具もそろえているだろうことは誰にでも想像が付くと思うのですが。epistemeさんの例えもそれが前提の話です。大工の例えに対して、大工でない何かの話で反論しているものですから可笑しかったのですよ。 > 2点目、「まずは聞かれたことに答え~というのが筋でしょう。」誰が決めたの? 経験から学んだのです。あなたは誰かに決めてもらわないと何もできないのですか? > お客様は神様です~なエンジニア? あなたさ、ただのセールスマンじゃないの? > 「などと言ったら客は怒りますよ。」 怒ったからなに? 最初の話聞いた時点で「これ、客じゃないな」って判断できなかったって事? エンジニアと直接話をする段階ですでに営業を通しているということです。つまり客です。 > 「俺が金出してるのに」←こんなの客だと思ってるんだ、おつかれ様。 あなたのような対応をするとそうなるという話です。 > 仕事は確かに必ずしも選べるわけじゃねぇよな。だが、金出してる奴が絶対上じゃなきゃいけないっていうあんたの考え方はどう考えても、エンジニアじゃねぇよ。 私は一言もそのようなことは言っていません。言ってもいないことを言ったとして批判するのは、あなたのようなタイプによくある論法です。 > あんた、5000ポイントだか稼いで自分は凄いと勘違いしてるのかもしれないけど、 私はポイントなどまったく気にしていませんが。確かに最初のうちはポイントが付くのが面白かったですが、すでに飽きました。 それと、「あなた」が途中から「あんた」に変わっていますね。冷静さを欠いているようです。 > 人間として博識であるわけじゃねぇからそこんとこはちゃんとりかいしてくんないかな? 肝に銘じておきます。 あと、せっかく長いコメントを書いたので、魚拓もお忘れなきようお願いします。
退会済みユーザー

退会済みユーザー

2018/06/26 17:09 編集

なんだこのクッソ長い頭おかしな言い分は。相変わらず全文クソ論理すぎて話にならねぇ。 呼称が変わってるから冷静さを欠いているキリッって、キチガイカヨ。コナン君の読みすぎじゃねぇの? こんなのですら丁寧に相手してやんないと運営からペナルティ喰らうのこっちなんだから、ある意味、低能先生と似たり寄ったりでタチ悪りぃよ、コイツ。
退会済みユーザー

退会済みユーザー

2018/06/26 17:16

一番わかりやすいと思うから一つだけについて言っておくと、 運営がうるさいから最初の段階で「テメェ」って書きたいの我慢してこらえて差し上げた事くらいは、せめて理解してもらえないで御座いましょうかねぇ? 本当に、知的レヴェル低い方のお相手をして差し上げるのはなかなかしんどいので御座いますよ。
catsforepaw

2018/06/27 00:31

luckerさん > 運営がうるさいから最初の段階で「テメェ」って書きたいの我慢してこらえて差し上げた事くらいは、せめて理解してもらえないで御座いましょうかねぇ? 冷静さを欠いていたのは途中からではなく最初からでしたか。察しが悪くて申し訳ありません。 > なんだこのクッソ長い頭おかしな言い分は。 > 呼称が変わってるから冷静さを欠いているキリッって、キチガイカヨ。 > ある意味、低能先生と似たり寄ったりでタチ悪りぃよ、コイツ。 > 本当に、知的レヴェル低い方のお相手をして差し上げるのはなかなかしんどいので御座いますよ。 人格攻撃はむしろ相手に隙を与えるので逆効果ですよ? 打つ手がなくなったということを示すことになりますから。 私としてはちょっと物足りなかったのですが、終わりにして欲しい雰囲気なので、ここまでのようですね。それでもこのような長い文章を書く機会はなかなかありませんので、貴重な場を提供していただきありがとうございました。
carnage0216

2018/06/27 02:59 編集

archiverさんへ。 >>というか、この質問者さんに対してはこれくらいのことを言わないと「現実を受け止めようとしない」と思うので、いい薬だと思う(「毒」になるかもしれないが。まあ、これで心が折れるくらいなら、その程度だと思うし)。 正直、この質問者さんは甘々の甘えん坊さんなので、誰かしらこのくらいのことを言わないとダメだと思う。 おっしゃる通り、人に頼りっぱなしですね。まあ、そんなこと言われなくても現実も見ているし、落ち込むことはあっても心が折れることはないですね。確かにもの作りには不向きなんてことも言われなくても自覚しています。 基礎力がないのもわかっている故、勉強はしています。勉強しているさなか刺激を受けやすく、脱線したような質問をします。迷惑行為みたいになってしまい申し訳ありません。 技量も頭も足りませんが、自覚していることを言われるのはさすがに頭に来ますね。特に私の過去の質問に回答していたわけでもないのに...こんな時だけ横入りされても...。二度と解答しないで結構です。
carnage0216

2018/06/27 02:47

あと、luckerさん。 私の質問が一番の悪の根源んです。 本当にすいませんでした。どうかこれ以上ここでの投稿は辞めていただけないでしょうか。 自分のために解答してくださったとかではなく、解答者様方が言い合うのは見ていて嫌な気分になります。 どうかやめてください。
carnage0216

2018/06/27 02:50

catsforepawさん、luckerさんの性格をお察しして相手にしない方が良いように思えます。 理由はどうあれ(私の質問がすべての原因なのですが)luckerさんの書く暴言は読んでいて気分が悪くなります。
mituha

2018/06/27 03:17

> carnage0216さん 質問するのも、回答するも自由です。 「私の質問が一番の悪の根源」と考えるのはやめましょう。 すくなくとも、これだけの回答がついているは良い質問と言えます。 luckerさんは他の質問者を煽り過ぎではありますが、回答としては carnage0216さん のこれまでの質問等を把握した上での良回答です。 おかけで、回答するか悩んでしなかったよw
carnage0216

2018/06/27 04:30 編集

どうもありがとうございます。確かにluckerさんのご指摘は的を得ています。 アルゴリズムうんぬんよりもまずは基礎勉強ですよね。(他の方からも言われて思い知らされました。こんな私に今でも呆れられてるかもしれませんが、指摘やアドバイスしてくださる方がいてくれて本当に感謝しています。反省しています。 甘えのようになってしまいますが、今後も何か間違いがありましたらどうかご指摘して頂きたいです。今回解答していただいた皆様、どうもありがとうございました。また今後もどうかよろしくお願いいたします。) 低評価が今回1つもつかなかったのは奇跡です...。
catsforepaw

2018/06/27 04:56

carnage0216さん > catsforepawさん、luckerさんの性格をお察しして相手にしない方が良いように思えます。 > 理由はどうあれ(私の質問がすべての原因なのですが)luckerさんの書く暴言は読んでいて気分が悪くなります。 私のことはお気になさらずに。私は私のやりたいようにやっているだけですから。たまにはそういうのも楽しいものですよ。まぁ、luckerさんの方が面倒くさがって早々に終わってしまいましたが。 それと、私もmituhaさんと同意見なのですが、自分を卑下するのはやめて欲しいと思います。C/C++は楽しいと思える段階に達するまでに非常に長い時間がかかるので、横道にそれたくなる気持ちは判らないでもないです(できればもっと難易度が低く派手な演出のできる言語から始めた方が良いとは思うのですが……)。
退会済みユーザー

退会済みユーザー

2018/06/27 12:09

ねぼけてんな相変わらずこいつ。誰がめんどくさいっつった。 運営がおかしな裁定するからアホらしくてやってらんないっつってんだよ。 日本語読めないやつは書き込みするなよ、ホント。
catsforepaw

2018/06/27 12:16

なかなかしんどい、と書かれていましたので面倒くさくなったのかと思ったのですが、違いましたか。 アホらしくてやってらんない、とはどこにも書かれていないので判りませんでした。書いてないものは読めませんよ。
退会済みユーザー

退会済みユーザー

2018/06/27 12:20

読めねぇのはお前がロボだからだよ。いい加減に気づけ。
hmmm

2018/06/27 12:22

carnage0216さん > 低評価が今回1つもつかなかったのは奇跡です...。 質問内容はナンセンスすぎて低評価にしたいんだが、該当する選択肢がないから低評価にせず踏みとどまっているだけ。 luckerさんの指摘事項は的確だし、carnage0216さんは何度も同じようなこと言われてるんだからいい加減にしてほしい。
catsforepaw

2018/06/27 12:25

なるほど、よく判りました。では終わります。
guest

0

便宜上、アルゴリズムを「基本的なもの」(素因数分解でいえば、「ひたすら割れるか試していく」ようなもの)と、「専門的なもの」(数論的に議論を深めた素因数分解)に分けて考えます。

基本的なアルゴリズムは、多くの問題に対して共通して使える枠組みとなるので、プログラマーにとっての基礎トレーニングのようなものになります。

専門的なアルゴリズムは、確かにその問題にしか役に立たないように見えます。しかし、世界はどこで何がつながっているかわかりません。たとえば、純粋に数学的な問題だと思われていた素数論の世界も、RSA暗号の発明によって、一気に実用性のある研究が行われる分野となりました。

teratail.comに使われている証明書もRSAなので、これを素因数分解できればteratail.comのフリをすることができる、そういう物となっています。

投稿2018/06/22 13:36

編集2018/06/22 13:36
maisumakun

総合スコア145183

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

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

carnage0216

2018/06/22 18:30

>>teratail.comに使われている証明書もRSAなので、これを素因数分解できればteratail.comのフリをすることができる、そういう物となっています。 想像がいまいちできませんでしたが、なんだか凄いですね。興味深いです。
guest

0

これから先、動かすものを誰かに提供してもらう、誰かが作ったものを、その言うとおりに動かしてそれで満足するなら、アルゴリズムなんか勉強する必要はありませぬ。
まー、楽でいいですな。自分ではなにも苦労する必要はないんだから。

しかし、自分でなにかを作る、自分の手でなにかを産み出そうとするなら、アルゴリズムの知識がないとどうしようもなくなりますな。

投稿2018/06/22 13:29

y_waiwai

総合スコア87749

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

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

carnage0216

2018/06/22 18:28 編集

>>まー、楽でいいですな。自分ではなにも苦労する必要はないんだから。 おっしゃる通りだと思います。アルゴリズムを一から組めるだけの頭はないです、しかし、楽をするのはあまり気持ちのいいものではないと考えています。なので、自分はもっと苦労したほうがいいと思いました。
guest

0

こんにちは。

そこで質問なのですが、アルゴリズムを勉強するメリットはあるのでしょうか?

何を行う時にアルゴリズムを勉強するのでしょうか?

アルゴリズムを知っていれば、そのアルゴリズムを使うのが適切なプログラムを短期間で開発できます。
ウロウロ試行錯誤せずに1発で良いものを作れますから。
しかし、当たり前ですが対象分野に適用できないようなアルゴリズムは知っていても役には立ちません。
更に、世の中にアルゴリズムは星の数ほどあります。それらを全て把握するのは現実的ではないと思います。
従って、興味のある分野に絞ってどのような有用なアルゴリズムがあるのかを把握し、それを使えるようにすることが重要です。そして、例えば既に誰かがライブラリを用意しているアルゴリズムなら使い方だけ把握すれば十分でしょう。しかし、そのアルゴリズムを微調整することで目の前の問題向けに最適化したいなら、中身も理解しておく必要があります。

私としては、例えば素因数分解のアルゴリズムを勉強したのですが、このような数学的なアルゴリズムが機械学習や画像処理にどのように使われているのか具体的に知りたいです。

機械学習の技術文書や画像処理の技術文書を読めば、それらにどのようなアルゴリズムが使われることが多いのか把握できると思います。
機械学習ならパーセプトロンから始まってバックプロパゲーション、ディープラーニングが有名でしょうか。
画像処理の場合は、ソーベルフィルタ等のフィルタ群、各種コーナー検出・ハフ変換・SIFT/SURF等様々な特徴抽出アルゴリズムなどが本当に多数あります。

素因数分解が機械学習や画像処理に使われるケースがあるのかどうか私は把握していませんが、毛色が異なるのでこれらの分野に使われることは多くはないだろうと思います。

投稿2018/06/22 15:48

編集2018/06/22 18:03
Chironian

総合スコア23272

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

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

carnage0216

2018/06/22 18:25

具体的なアドバイス、大変参考になります。 どうもありがとうございます。
guest

0

アルゴリズムを勉強するメリットはあるのでしょうか?

考えたこともないなー。

「大工さん、ノコギリとカナヅチが使えるといいことあるんですか?」

...使えないとメシが食えねぇよ。

投稿2018/06/22 20:35

episteme

総合スコア16614

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

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

carnage0216

2018/06/22 20:40

解答ありがとうございます。 たしかにノコギリとカナヅチが使えるといいこと以前に生きていけないですよね。 なるほど、直感的にですがメリットはあると思いました。
guest

0

アルゴリズムは、広義に何かを実現するための手続きです。

狭義に、クイックソートやユークリッドの互除法などがあります。
特別にある側面で考えたときに優れていて、淘汰の中、生き残っているものが狭義的なアルゴリズムです。

結局プログラミングでやろうとしていることは、数多くの狭義的なアルゴリズムを組み合わせることで広義的なアルゴリズムを作り上げて、やりたいことを実現することです。
ソートをするのに、クイックソートを使えば良い、ということを知っていればクイックソートのアルゴリズムを知る必要はありません。

ですので、新しい狭義的なアルゴリズムを作りたいのでなければ、特にアルゴリズムを勉強する必要はありません。

と極論を言っても構いません。


もっと簡単な例で考えてみればいかがでしょうか。

数学を理解するのに、足し算を知る必要はありません。

足し算は電卓を使えば、人ができなくても構いません。

であれば数学を理解するための道具の仕組みは知らなくても良さそうです。
どうですか、足し算ができない人が数学を理解できそうですか。


勉強は退屈だから、あまり意味を見いだせないことが珍しくありません。
ただ、多くのケースは、簡単すぎるから退屈なわけではありません。
難しくて理解できないから退屈なのです。
そのものが難しくて理解出来ないケースもあれば、それが必要とされる文脈を知らないから理解出来ないケースもあります。

でも逆に考えてみてほしいのは、教えられて難しいことを自力で見出すことができるか、ということです。
勉強して習得していかないと、おそらく一生理解できないことを積み上げていくことになるのです。

言語も勉強してきました。
この言葉は使わないから勉強する必要がないと考えたことはありません。

投稿2018/06/22 16:07

編集2018/06/22 16:19
mkgrei

総合スコア8560

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

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

0

ベストアンサー

素因数分解だと機械学習や画像処理とはほとんど関係ありません。しかし、暗号との関連性が高いです。

参考:
RSA暗号 - Wikipedia


画像だと、重要なのは信号処理系の技術ですし(FFT, ウェーブレット変換あたり)、機械学習は線形代数、確率論、最適化問題あたりの様々なアルゴリズムが絡んできます。これらのアルゴリズムはその分野の知識がないととても理解はできません。ですから、C言語の入門書に登場することはまずありません。
一般論として「数学的アルゴリズムが画像処理や機械学習に応用されている」と主張することに問題はありませんが、「この本に載っているようなアルゴリズムがそのような分野に応用されている」というニュアンスで書いてあったのなら、著者の方の勇み足だったのかもしれません。


何を行う時にアルゴリズムを勉強するのでしょうか?

エンジニア的な立場から、答えの候補を考えてみましょう。なお、何を以てアルゴリズムとするかによって答えが変わりますが(すべてのプログラムはアルゴリズムである、と極論することもできなくはないかもしれない)、今回は一般的にアルゴリズムとして見なされる範疇のものを相手にします。
候補としては、
0. 自分でアルゴリズム自体を新規開発するとき

  1. 自分以外が開発したアルゴリズムを実装するとき
  2. 自分以外が開発・実装したアルゴリズムを利用するとき

がありますが、1,2を仕事にしている人は実際にはごく一部です。よって消去法で3が現実的な答えです。

便利なアルゴリズムは大抵、容易に利用できるような形で実装が配布されています。画像処理や機械学習までは考えないにしても(特定分野の話なので)、hashやソートは汎用的によく使われるアルゴリズムの良い例ですし、そもそもC言語で書いた簡単な四則演算すら、半導体チップの中のMOS-FETからC言語のソースコードの間までには無数のレイヤがあって、その中に無数のアルゴリズムがあって利用できるようになっている、と考えるべきです。それが一行、数文字で書けるのがアルゴリズムの威力と言ってもそんなに間違いではありません。
だから私達は否応無しにアルゴリズムは使っているのですが、思い通り動かない、動くんだけど遅い、ということがままあると思います。こういうとき、アルゴリズムの性質を理解しているかどうかで打てる手がまったく変わってきます。
既存のものに不満を一切持たず使うだけ、ならアルゴリズムの知識は不要かもしれませんが、不満があって改善したい、というモチベーションが生じてくるようであれば、知識がないといじりようがありません。ブラックボックス扱いしていたら何も出来ないということです。

投稿2018/06/22 14:12

編集2018/06/22 14:36
hayataka2049

総合スコア30933

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

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

carnage0216

2018/06/22 18:34

解答どうもありがとうございます。 本に書いてることも勉強になるのですが、皆様の意見や考えの方が何倍も勉強になります。
hayataka2049

2018/06/23 15:34

自分のやりたいことがわかっていて、どうすればそこにたどり着けるのかの道筋が見えている状態なら、人の意見や考え方を聞くより、本を読みgoogleで情報を集め手を動かした方が、何倍も何十倍も効率よく結果が得られるのが普通です。 ただ、そういう素晴らしい状態に入れるまでには、長い長い迷走期間があります。質問者様はまさにその中にいると思うので、まあ頑張って。
guest

0

アルゴリズムを勉強するメリットはあるのでしょうか?
何を行う時にアルゴリズムを勉強するのでしょうか?

アルゴリズムというのは、要するに問題を解くための方法です。アルゴリズムをたくさん知っていれば、それだけ多くの問題に対処できるということです。つまり、プログラムを作る際にいちいち人に聞くまでもなく自力で作れるというわけです。なんかよく判んないからネットで見つけたソースをコピペしてみたけど思った通りに動かない、などと悩んだりすることもありません。
ものすごいメリットだと思いませんか? それに勝るメリットなど私には思いつきません。

投稿2018/06/23 01:31

catsforepaw

総合スコア5938

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

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

0

アルゴリズムを勉強しない / 知らないことによるデメリットを考えてみてはいかがでしょう。

基本的なあるアルゴリズムをしらないと、
それを使ったコードをう読んだときに理解ができなかったり、実装間違いを見つけるらrなかったりします。(特殊なアルゴリズムなら、コメントや付随ドキュメントにアルゴリズム能勢梅井があるかもsれあsねんが、一般的なものには説明なしでつかわれていることが多いです)

効率が悪い実装をしてしまったり、車輪の再発明をすることで時間を無駄にすることになります。

アルゴリズムの勉強では、その実装がただしく動作することの証明(テスト) や計算量/メモリー使用量の見積もりの説明も理解することが大事です。
そういった手法は、自分でなにか新たなアルゴリズムをつくるときに、
そのアルゴリズムを評価したり、実際の実装をするときのコードの良し悪しを判断するときに役立ちます。

追記:
書籍 Graphics Gems
https://www.amazon.co.jp/Graphics-Gems-IBM/dp/0122861663
には、先人が編み出したコンピュタグラフィックの各種手法が記載されています。
高速な描画手法など、自分一人でかんがえていたのでは到達が困難なものが、こういった資料で入手できるのです。

例:ブレゼンハムのアルゴリズム https://ja.wikipedia.org/wiki/%E3%83%96%E3%83%AC%E3%82%BC%E3%83%B3%E3%83%8F%E3%83%A0%E3%81%AE%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0

...
与えられた始点と終点の間に連続した点を置き、近似的な直線を引くためのアルゴリズム。
...
整数の加減算とビットシフトのみで実装できるので多くのコンピュータで使用可能である。コンピュータグラフィックスの分野の最初期のアルゴリズムの1つである。これを若干拡張すると、円を描くことができる。
...
プロッターやビデオカードのGPUといったハードウェアで使用されている。ソフトウェアでは多くのグラフィックスライブラリ(英語版)で使用している。非常に単純なので、ビデオカードのファームウェアなどに実装されていることが多い。

円を描くのに三角関数を使っていては速度が出ませんよね。

投稿2018/06/24 01:38

編集2018/06/26 16:04
katoy

総合スコア22324

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

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

0

素因数分解が例にあがっていますが
数学的な話だけではありませんよ。
プログラムを通じて、問題・課題に対して解決する手立てを得るというのが私の認識です。
そのため、様々な解決手法が誕生、磨かれてきています。

私をはじめ、エンジニア、デザイナーなどは、手法、パターン化されたデザインなどを駆使して
解決に向けて最適解を得ようとします。それがアルゴリズムだと思います。

それでは、carnage0216さんに改めて伺います、なぜC言語やCUDAを選択しプログラムを学ぶこと選択したのでしょうか。
FPGAを使ってアプローチするのはなぜでしょうか、何かしらの問題に対して解決する手法、最適解、最善解を得るためではないでしょうか。

投稿2018/06/22 13:38

YomogiKOBO

総合スコア187

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

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

carnage0216

2018/06/22 18:22 編集

>>なぜC言語やCUDAを選択しプログラムを学ぶこと選択したのでしょうか。 私はリアルタイムでの画像処理に興味があります。 C言語を選んだのは処理が高速であること、bit計算などの細かい処理までプログラムできることです。(もちろん、細かい処理といってもアセンブリ言語でないと書けない部分がありますが。) CUDAを使う理由は、NVIDIAのGPUを使うためです。画像処理をリアルタイムで行うことを考えていたら自然とGPUにたどり着きました。 >>FPGAを使ってアプローチするのはなぜでしょうか はい、以前はFPGAで画像処理を行おうと考えていました。しかし、作りたいものを「私」一人で作るのは不可能と考えました。というのも、情報も少なくアルゴリズムが少なかったためです。(また、私が扱うにしてはハードルが高すぎたとも思っています。) ハードの処理の方がソフトよりも高速であれど一からすべて作るのは「私」には不可能です。 他にも金銭的な問題など、そのためFPGAから逃げました。(開発を諦めました。) そのあとで先ほど出ましたNVIDIAのGPUに出会いました。たまたま使っているPCに搭載していたこと、書店やサイトで情報が豊富なことによりFPGAを使わなくても作りたいものが作れるかもしれないと考えました。 「NVIDIAのGPUに出会ったこと」が問題に対して解決する手法、最適解となっていると私は考えています。 わかりにくい文章で申し訳ありません。
guest

0

アルゴリズムは手段でしかありません。

ですので単独で追及することに意味はほぼないです。しいて言うならば、単独では数学屋さんの仕事です。現実には現実課題を数学的に定式化することが前段階で必要です。

そして、大抵の場合は現実課題を数学的に定式化することの方が大事な問題です。アルゴリズムはプログラムを書き下す段階での必要知識です。これはプログラマには必要なものですけれど、所詮は細かい内務処理上の都合です。

(もちろん、社会活動において、さらに重要な契約締結とか仕様策定もありますけれど、これは割愛します。)

単独でアルゴリズムを議論することはあまり意味をなしません。

これに意味があるとすればプログラム高速化とかメモリ節約とか、プログラマ負担の軽減とかくらいでしょう。

具体的な勘違い例としてはメタヒューリスティクスの問題でしょうか

学術論文とか読むと、**「焼きなまし法を使った○○の方法」とか「遺伝的アルゴリズムを使った○○の方法」とか「ニューラルネットワークを使った○○の方法」**だなんてタイトルをよく見ますが、すべてナンセンスです。(「定式化部分を主張すれば良いのに」、「アルゴリズム名をタイトルにしても意味ない」、とよく思います。)

メタヒューリの世界では「ノーフリーランチ定理」と呼ばれるものがあり、「課題における解の分布が未知であるならば、適切なアルゴリズムを事前に知ることはできない」ということが示されています。つまり、計画時には適切なアルゴリズムは不明です。しいて言うならば、作りやすさで差別化できる程度です。

メタヒューリの成果物の良し悪しを議論しても無駄です。これは同条件では同確率であり、周辺知識なしに「宝くじと競馬どちらの方が儲かるか」と論じるようなものです。確率のみに全て依存するので、人間の選択に関係はありません。

もちろん、様々なメタヒューリを試行したうえで結果を比較するならば成果物を比較できますけれど、これに応じて学術論文の主張を決めるならば統計上の不正を意味します。

ちなみに、メタヒューリの活用は私の学生時代の研究テーマであり、最終的な結論は「論じるだけ無駄」です。

投稿2018/06/23 13:16

編集2018/06/23 13:40
HogeAnimalLover

総合スコア4830

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

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

0

そこで質問なのですが、アルゴリズムを勉強するメリットはあるのでしょうか?

他の方が書かれていますが、個人的にはYomogiKOBOさんの書かれていることが刺さりました。
最適とまではいかなくてもより良い方法を求めるのであれば、いろいろな手段を知っていなければいけません。C言語やアセンブラ、GPUにばかりと気を取られて視野を狭めているように思います。リアルタイムでの画像処理をするという目標に対してそれが最適なのでしょうか?画像処理を学ぶ必要はないのでしょうか?

例えば素因数分解のアルゴリズムを勉強したのですが、このような数学的なアルゴリズムが機械学習や画像処理にどのように使われているのか具体的に知りたいです

このような?どのような?具体的に?質問が曖昧なのに具体的には答えらません。
連想ゲームのような難しさというか、アルゴリズムがなぜ重要かみたいな一般的な話しか出てこないでしょう。

以前、本に載っていたのは、「機械学習、画像処理を行う上で数学的なアルゴリズムを勉強する必要がある」と書いてありました。

何の本でしょう。機械学習、画像処理の本ってそもそも数式だらけのような気がしますが・・・。プログラミングの入門書?

投稿2018/06/23 06:10

nullbot

総合スコア910

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

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

0

すでに多くの的確な回答が出ていますが、蛇足ながら。

たとえば、運転免許が取れれば車の運転はできますが、エンジンやステアリングの仕組みを知らないと、車の性能を十分に引き出すことはできませんし、いろいろなトラブルが発生したときに、適切な対処ができません。でも、初心者や町乗りの買い物程度の運転者で、ディーラーに定期点検してもらってたりすれば、そのような知識も不要でしょう。要はどの程度の技術が貴兄にとって必要なのか、です。

同様に、アルゴリズムにはさまざまなものがありますが、それぞれに一長一短で、アルゴリズムによっては特定の条件に弱かったり、向き不向きがあったりします。一般的な用途で、それほど負荷の高くない処理ならライブラリ等を使えば十分でしょうが、用途によってはそうも言ってられないときもあります。

たとえば、並べ替え(ソート)については、非常に多数のアルゴリズムが知られていますが、ある意味悪名の高い「バブルソート」というものがあります。これは、完全にばらばらのものを整列させる上では非常に効率の悪いアルゴリズムですが、何しろ原理が非常に単純ですし、実は、ほどほど順番がそろっている場合は最速であったりもします。そういう場合は、あえてこういうアルゴリズムのプログラムを自分で組んで、使ったりもします。

素数の計算アルゴリズムも、それ自体思わぬところで使われていたりしますし、その方式により長短もあります。また、アルゴリズムそのものより、それを調べ、理解し、応用できるセンスが大事だというのも、すでに回答のあるとおりです。

一種の教養として知っておくことだけでもご自身にきっと役に立ちますし、そうでなくともご自身の習得の進度や必要に応じて、アルゴリズムを勉強されればよろしいのではないでしょうか。

投稿2018/06/27 00:52

webappbeginner

総合スコア37

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問