2019年09月19日

JavaScriptの情報共有

アルゴリズムwith JavaScript

皆さんこんにちは
はじめまして
AliveCastに入社してから6ヶ月が経過しました。
入社してから少しづつjavascriptについて勉強してましたが、まだjavascriptがどう動くのかそのアルゴリズムについてまだ勉強した事がなかったのでjavascriptのアルゴリズムについて勉強したこ事を共有しようと思います。
(まだまだ未熟者なので「間違ったことを言ってるよ!」と思われた方はご指摘ください..)

アルゴリズムは?
皆さんはアルゴリズムと言う単語をしていますか?
多分どこかで聞いた事があると思います。
あまり大衆的な単語ではないので皆さんは多分パソコンが動作するため必要するための物と思っているかもしれません。
でも、アルゴリズムは複雑な意味ではなく簡単に言えば「問題を解くための手順」になります。

皆さんも簡単にアルゴリズムを体験する事ができます。
簡単な掛け算もアルゴリズムの基から構成されています。
例にして84x29を掛け算すると答えは2436になります。
そしてこの掛け算の手順を見ると下の内容になります。

         84
       x29
  —————
         36
       72
     8
 + 16
 —————
    2436

上の手順にすると、どんな整数でも掛け算する事ができます。
この手順自体をアルゴリズムといえます。


アルゴリズムが満足すべき条件
アルゴリズムを満足するための条件では五つがあります。

汎用性
どんな環境でも同じ結果を取るのができる事、つまり汎用性がある事が正しいアルゴリズムといえます。

正当性
与えられた課題について正しい結果(=出力)取る事、つまり正当性もアルゴリズムの重要な条件になります。

決定性
アルゴリズムは同じ物を入力する時かならず同じ結果が出ないといけません。
もし違う結果が出るとそれは正しいアルゴリズムではありませ。

有限性
アルゴリズムは有限であるべきです。
停止しない結果を出力することは、つまり問題を解決できないことを意味するので、
正しいアルゴリズムとはいえません。

停止性
アルゴリズムはいつかは停止いなければなりません、てはアルゴリズムほ停止を判断するアルゴリズムを作って解決すると思いますが、それは結論から言えるとそういうアルゴリズムは作る事ができません。


今回はここまでアルゴリズムの勉強す共有を終わります。
ブログの作成をしながら勉強した部分を復習にもなるし共有する楽しみもあったので、
良い経筋になりました。
これからも自分が勉強した部分を更新すると思います。
長文を読んでくださってありがとうございます。