数学やプログラミングに興味がない限り、「アルゴリズム」という言葉はギリシャ語かもしれませんが、この記事を読むために使用しているすべてのものの構成要素の1つです。それらが何であるか、そしてそれらがどのように機能するかについての簡単な説明があります。
免責事項:私は数学やコンピュータサイエンスの教師ではないため、使用する用語のすべてが技術的なものではありません。それは、私がすべてを平易な英語で説明しようとしているので、人々は数学にあまり慣れていません。そうは言っても、いくつかの数学が関係していて、それは避けられません。数学オタクは、コメントで自由に訂正するか、より適切に説明してください。
による画像 イアン・ルオサラ
アルゴリズムとは何ですか?
「アルゴリズム」という単語の語源は「代数」に似ていますが、アラビア語の数学者であるアルクワリズミ(興味深い一口)を指している点が異なります。プログラマー以外の人にとってのアルゴリズムは、入力Aを受け取り、何らかの方法で関連するデータを変更する出力Bを提供する一連の命令です。アルゴリズムにはさまざまな用途があります。数学では、はるかに高度なものの中でも、データセット内のポイントから関数を計算するのに役立ちます。プログラミング自体での使用は別として、ファイル圧縮やデータ暗号化などで主要な役割を果たします。
指示の基本セット
あなたの友人が食料品店であなたに会い、あなたが彼をあなたに向かって案内しているとしましょう。 「右側のドアから入ってくる」、「左側の魚のセクションを通過する」、「乳製品を見ると、私を通過した」などと言います。アルゴリズムはそのように機能します。フローチャートを使用して、事前に知っている基準に基づいて指示を説明したり、プロセス中に見つけたりすることができます。
(「 砕氷ルーチン 」編集:礼儀 トリガーとフリーホイール )
STARTから、パスをたどり、何が起こるかに応じて、「フロー」に従って最終結果を出します。フローチャートは、コンピューターで使用される一連の命令をより理解しやすく表すことができる視覚的なツールです。同様に、アルゴリズムは、より数学ベースのモデルでも同じことを行うのに役立ちます。
グラフ
グラフを使用して、方向を示すさまざまな方法を説明しましょう。
このグラフは、すべてのポイント間の接続として表すことができます。この画像を再現するために、他の誰かに一連の指示を与えることができます。
方法1
これを一連のポイントとして表すことができ、情報はグラフの標準形式= {(x1, y1), (x2, y2), …, (xn, yn)}に従います。
グラフ= {(0,0), (3,0), (3,3), (5,5), (7,10), (8,7), (9,4), (10,1)}
各ポイントを次々にプロットして、前のポイントに接続するのは非常に簡単です。ただし、1000ポイントまたは複数のセグメントがすべてすべての方向に進んでいるグラフを想像してみてください。そのリストにはたくさんのデータがありますよね?そして、それぞれを一度に1つずつ接続する必要があるのは、苦痛になる可能性があります。
方法2
もう1つの方法は、開始点、つまり開始点と次の点の間の線の傾きを指定し、graph = {(starting point}、[m1, x1, h1]、…、[mn, xn, hn]}の標準形式を使用して次の点を期待する場所を示すことです。ここで、変数「m」は線の傾きを表し、「x」はカウントする方向(xまたはy)を表し、「h」はその方向にカウントする方向を示します。また、各動きの後にポイントをプロットすることを忘れないでください。
グラフ= {(0,0), [0,x,3], [0,y,3], [1,x,2], [2.5,x,2], [-3,x,1], [-3,x,1], [-3,x,1]}
最終的に同じグラフになります。この式の最後の3つの用語は同じであることがわかります。したがって、何らかの方法で「それを3回繰り返す」と言うだけで、それを削減できる可能性があります。変数「R」が表示されたら、最後のことを繰り返すことを意味するとします。できるよ:
グラフ= {(0,0), [0,x,3], [0,y,3], [1,x,2], [2.5,x,2], [-3,x,1], [R=2]}
個々のポイントが実際には重要ではなく、グラフ自体だけが重要である場合はどうなりますか?これらの最後の3つのセクションを次のように統合できます。
グラフ= {(0,0), [0,x,3], [0,y,3], [1,x,2], [2.5,x,2], [-3,x,3]}
以前の状態から少し短くなります。
方法3
これを別の方法で試してみましょう。
y = 0、0≤x≤3
x = 0、0≤y≤3
y = x、3≤x≤5
y = 2.5x-7.5、5≤x≤7
y = -3x + 29、7≤x≤8
y = -3x + 29、8≤x≤9
y = -3x +29.9≤x≤10
ここに、純粋な代数的用語でそれがあります。繰り返しになりますが、ポイント自体が重要ではなく、グラフのみが重要である場合は、最後の3つの項目を統合できます。
y = 0、0≤x≤3
x = 0、0≤y≤3
y = x、3≤x≤5
y = 2.5x-7.5、5≤x≤7
y = -3x + 29、7≤x≤10
さて、あなたが選ぶ方法はあなたの能力に依存します。数学とグラフが得意なので、最後のオプションを選択します。ナビゲートが得意なので、2番目のオプションを選択します。ただし、コンピューターの領域では、さまざまな種類のタスクを実行しており、コンピューターの機能は実際には変わりません。したがって、アルゴリズムは、完了するタスクに合わせて最適化されます。
注意すべきもう1つの重要な点は、各メソッドがキーに依存していることです。指示の各セットは、それらをどうするかを知らない限り役に立ちません。各点をプロットして点を結ぶことになっていることがわからない場合、最初の点のセットは何の意味もありません。 2番目の方法で各変数が何を意味するかを知らない限り、暗号の鍵のように、それらを適用する方法はわかりません。そのキーは、アルゴリズムを使用する上で不可欠な部分でもあり、多くの場合、そのキーはコミュニティまたは「標準」を介して見つかります。
ファイル圧縮
.zipファイルをダウンロードするときは、内容を抽出して、その中のすべてのものを使用できるようにします。現在、ほとんどのオペレーティングシステムは、通常のフォルダーと同じように.zipファイルに飛び込み、すべてをバックグラウンドで実行できます。 10年以上前のWindows95マシンでは、ファイル名以外のものが表示される前に、すべてを手動で抽出する必要がありました。これは、.zipファイルとしてディスクに保存されたものが使用可能な形式ではなかったためです。引き出し式のソファを考えてみてください。ベッドとして使いたいときは、クッションを外して広げる必要があり、場所を取ります。不要な場合や持ち運びたい場合は、折りたたんで元に戻すことができます。
圧縮アルゴリズムは、対象となるファイルの種類に合わせて調整および最適化されています。たとえば、オーディオ形式はそれぞれ異なる方法でデータを保存し、オーディオコーデックでデコードすると、元の波形と同様のサウンドファイルが得られます。これらの違いの詳細については、以前の記事をご覧ください。 これらすべてのオーディオ形式の違いは何ですか? ロスレスオーディオ形式と.zipファイルには、共通点が1つあります。どちらも、解凍プロセス後に元のデータを正確な形式で生成します。非可逆オーディオコーデックは、他の手段を使用してディスクスペースを節約します。たとえば、人間の耳では聞こえない周波数をトリミングしたり、セクションの波形を平滑化して詳細を削除したりします。結局、MP3とCDトラックの違いを実際に聞くことはできないかもしれませんが、前者には間違いなく情報の不足があります。
データ暗号化
アルゴリズムは、データまたは通信回線を保護するときにも使用されます。使用するディスク容量を減らすためにデータを保存する代わりに、他のプログラムでは検出できない方法でデータを保存します。誰かがあなたのハードドライブを盗んでスキャンを開始すると、ファイルへの転送場所がなくなってもデータ自体がまだそこにあるため、ファイルを削除してもデータを取得する可能性があります。データが暗号化されている場合、保存されているものはすべて実際のようには見えません。通常、断片化が時間の経過とともに蓄積されたかのように、ランダムに見えます。データを保存して、別の種類のファイルとして表示することもできます。画像ファイルや音楽ファイルは、たとえば疑いを持たずに非常に大きくなる可能性があるため、これに適しています。これはすべて、ある種の入力を受け取り、それを別の非常に特殊なタイプの出力に変換する数学的アルゴリズムを使用して行われます。暗号化の仕組みの詳細については、チェックアウトしてください HTGの説明:暗号化とは何ですか?どのように機能しますか?
アルゴリズムは、コンピュータサイエンスでさまざまな用途を提供する数学的ツールです。それらは、一貫した方法で開始点と終了点の間のパスを提供し、それに従うための指示を提供するように機能します。私たちが強調したこと以上のことを知っていますか?コメントであなたの説明を共有してください!