コンピュータアルゴリズムとは何ですか、そしてそれらはどのように機能しますか?

公開: 2022-01-29

数学やプログラミングに興味がない限り、「アルゴリズム」という言葉はギリシャ語かもしれませんが、この記事を読むために使用しているすべてのものの構成要素の1つです。 それらが何であるか、そしてそれらがどのように機能するかについての簡単な説明があります。

免責事項:私は数学やコンピュータサイエンスの教師ではないため、使用する用語のすべてが技術的なものではありません。 それは、私がすべてを平易な英語で説明しようとしているからです。人々は数学にあまり慣れていません。 そうは言っても、いくつかの数学が関係していて、それは避けられません。 数学オタクは、コメントで自由に訂正するか、より適切に説明してください。ただし、数学的に嫌気がさしている私たちの間では、単純にしてください。

IanRuotsalaによる画像

アルゴリズムとは何ですか?

「アルゴリズム」という単語の語源は「代数」に似ていますが、これはアラビア語の数学者であるアルクワリズミ(興味深い一口)を指している点が異なります。 プログラマー以外の人にとってのアルゴリズムは、入力Aを受け取り、出力Bを提供する一連の命令であり、何らかの方法で関連するデータを変更します。 アルゴリズムにはさまざまな用途があります。 数学では、はるかに高度なものの中でも、データセット内のポイントから関数を計算するのに役立ちます。 プログラミング自体での使用は別として、ファイル圧縮やデータ暗号化などで主要な役割を果たします。

指示の基本セット

あなたの友人が食料品店であなたに会い、あなたが彼をあなたに向かって案内しているとしましょう。 「右側のドアから入ってくる」、「左側の魚のセクションを通過する」、「乳製品を見ると、私を通過した」などと言います。 アルゴリズムはそのように機能します。 フローチャートを使用して、事前に知っている、またはプロセス中に見つけた基準に基づいて指示を説明できます。

(「IcebreakingRoutine」というタイトルの画像編集:TriggerとFreewheelの厚意により)

広告

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 = {(開始点}、[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の説明:暗号化とは何ですか?どのように機能しますか?をご覧ください。


アルゴリズムは、コンピュータサイエンスでさまざまな用途を提供する数学ツールです。 それらは、一貫した方法で開始点と終了点の間のパスを提供し、それに従うための指示を提供するように機能します。 私たちが強調したこと以上のことを知っていますか? コメントであなたの説明を共有してください!