仕事でアルゴリズムが使われることはほとんどないので、なぜアルゴリズムを学ぶ必要があるのでしょうか?

仕事でアルゴリズムが使われることはほとんどないので、なぜアルゴリズムを学ぶ必要があるのでしょうか?

共通のデータ構造とアルゴリズム

最も基本的なデータ構造とアルゴリズムは次のとおりです。

  • ソートアルゴリズム
  • 再帰
  • リンクリスト
  • 配列
  • スタック
  • 優先キュー
  • ハッシュ
  • 二分木、B木、B+木、赤黒木
  • ビットマップ
  • ジャンプテーブル
  • 二分法
  • 動的プログラミング
  • 貪欲アルゴリズム

データ構造やアルゴリズムなしで作業しますか?

すべての SQL コマンドと Linux コマンドがアルゴリズムとデータ構造であることをご存知でしたか? 気付いていないかもしれませんが、ソフトウェアはこのように動作します。

データ構造とアルゴリズムは、ソフトウェアの実装や採用プロセスにおいても重要な役割を果たします。多くの学生や専門家が尋ねてきた質問は、「なぜこれらの企業の面接では、言語/フレームワーク/ツール固有の質問ではなく、DSA のみに焦点を当てるのですか?」です。

誰かに決断をするように頼んだとき、優秀な人は「これらの点で A、B よりも優れているので、X を選択しました。C を選択することもできましたが、この理由から、C の方が良い選択だと思います」と言うでしょう。私たちは日常生活で、常に、短時間で効率的に、より少ないリソースを使用してタスクを完了できる人と仕事をしています。同じことがこれらの企業でも起こります。これらの企業が直面している問題はより困難であり、ソフトウェア開発者はこれらの企業の問題を​​解決する際に適切な決定を下す必要があります。

[[386708]]

ハッシュ テーブル、ツリー、チャート、グラフ、さまざまなアルゴリズムなどのデータ構造に関する知識は、これらの問題を効果的に解決するのに大いに役立ちます。面接官は、候補者がこれらのツールをどのように使用して問題を解決するかに興味を持っています。自動車整備士が車を修理して正常に動作させるために適切なツールを必要とするのと同様に、プログラマーがソフトウェアを正しく動作させるためには適切なツール (アルゴリズムとデータ構造) が必要です。したがって、面接官は、与えられた問題を解決するために適切なツールを適用できる候補者を見つけたいと考えています。

Google、Microsoft、Facebook、Amazon などの企業で働くエンジニアは、コーディングが単なる実装であり、プロジェクトに割り当てられた時間の約 20 ~ 30% を占める他の企業とは異なります。ほとんどの時間は、会社のリソース (サーバー、コンピューティング能力など) を節約するために、最適なアルゴリズムを使用して設計することに費やされます。これが、これらの企業の面接でアルゴリズムについて取り上げられる主な理由です。企業は、会社に何千ドルもの節約をもたらすアルゴリズムを設計するために、独創的な発想ができる人材を求めているからです。

例: Facebook で働いているとします。あなたは、時間計算量が O(n^2) ではなく O(nLogn) である問題の最適解を提案し、現実のシナリオにおける企業の問題の n が 1 億であると仮定しました (Facebook には 10 億人以上のユーザーが登録されていることを考慮して)。 nLogn は 8 億ですが、n^2 は 10^7 億です。コスト面では、10^7 倍以上の効率向上が見られ、サーバーのコストと時間の面で大幅な節約につながります。

雇用主の視点から

面接は候補者を選考するために使われることは間違いありません。仕事よりも人が多い時代では、選考基準を改善する必要があります。たとえば、最も一般的なのは学歴です。平均的な学歴の人が良くないという意味ではありませんが、一般的に言えば、学歴の良い人の方が適切な人を選ぶ確率が高くなります。これが現実です。面接の質問では、アルゴリズムは他の記憶ベースの質問と比較して、人の論理と思考をよりよく反映できるため、優れた選考基準にもなります。もちろん、オペレーティング システム、ネットワーク、Linux などは、多くの企業が検討したいポイントです。

したがって、面接のためにアルゴリズムを学ぶ準備をする必要があります。

個人的な観点から

私が最初に入社した会社では、基本的にアルゴリズムは使用されていませんでした (これは苦労して学んだ教訓です。学校でしっかり準備していたに違いありません)。ネットワーク プログラミングさえ必要ありませんでした。基本的には単純な純粋な C 開発でした。なぜなら、それらはすでにパッケージ化されており (別のグループによって開発および保守されていた)、呼び出すだけで済んだからです。その後、私は主に 2 種類の企業との面接を受けました。1 つは従来の通信技術企業、もう 1 つはインターネット企業です。前者はプロジェクト自体と基本的な技術スキルに重点を置いていましたが、後者は通常、オペレーティング システム、データベース、アルゴリズム、ネットワークなどの知識を含む、より多くの側面を評価しました。

では、面接後は本当に全く役に立たないのでしょうか? 実際、ほとんどの場合、全く役に立たないのです。記述するものは主にビジネス コードとビジネス プロセス設計であり、コード実装はそのほんの一部に過ぎない可能性があります。さらに、検索を実装するための既存のアルゴリズムはたくさんあるので、クイックソート、スキップリスト、クイックソート、赤黒木などのアルゴリズムを自分で実装しなければならないことは基本的にありません。ただし、アルゴリズムを学習することにはメリットがあります。

たとえば、業務上のソート要件に基づいて、安定したソートを使用するか不安定なソートを使用するかを選択する必要があるかもしれません。データの挿入と削除の頻度に基づいて、配列リストを使用するかリンク リストを使用するかを選択するかもしれません。トップ K 問題に対処するためにヒープ関連のアルゴリズムを使用するかもしれません。特定の状況で高速検索のためにハッシュを使用するかもしれません。業務データ構造を設計するときに、基本データ構造の考え方を参照するかもしれません。

アルゴリズムは現実世界の複雑な問題を解決する

散らかった部屋で本や服が見つからず、親に叱られたことがありますか? もちろんあります。次に必要なものを簡単に取り出せるように、すべてを正しい場所に置くようにと親がアドバイスしたのは正しいことです。ここでは、すべてのコンテンツ (データ) を構造内に整理して保存し、何かを検索する必要があるときにいつでも簡単にすばやく取得できるようにする必要があります。この例は、現実世界でデータを整理したり構造化したりすることがいかに重要であるかを明確に示しています。

ここで、図書館を例に考えてみましょう。図書館で集合論に関する本を探す必要がある場合は、まず数学のセクションに行き、次に集合論のセクションに行くことになります。本がこのように整理されておらず、ランダムに割り当てられていたら、特定の本を見つけるのは困難でしょう。したがって、データ構造とは、コンピューター上で情報を整理する方法を指します。コンピューター科学者は、提供された入力に基づいてデータをより適切に処理できるように、データを整理する最適な方法を見つけて処理します。

多くの初心者プログラマーは、このデータ構造とアルゴリズムを日常生活のどこで使用し、現実世界の複雑な問題を解決するのにどのように役立つのかという質問をします。トップクラスのテクノロジー企業への入社に興味があるかどうかに関わらず、DSA は日常生活に非常に役立つということを述べておく必要があります。

[[386709]]

要約する

通常、これらのアルゴリズムを自分で実装する必要はありませんが、以下の点を理解することが重要だと思います。

  • 時間と空間の複雑さの概念
  • さまざまなデータ構造やアルゴリズムの効率
  • さまざまなデータ構造やアルゴリズムの複雑さ
  • さまざまなデータ構造やアルゴリズムの適用可能なシナリオ
  • ベクター、マップ、セットなどの一般的なコンテナの背後にあるデータ構造とは何ですか? また、検索や挿入の効率はどの程度ですか?
  • 既存のデータ構造とアルゴリズムからアイデアを得る
  • 既存の問題に基づいて適切なデータ構造とアルゴリズムを選択する

Java、C++、Python などとは異なり、C ライブラリには上記のデータ構造やアルゴリズムの実装がない場合があるため、C 言語はそれらの理解を深めるのに最適な選択肢でもあります。

すべては実際的な問題をより良く解決するためです。

<<:  スマートビルにはスマートクリーニングが必要な理由

>>:  人工知能アルゴリズム: 遺伝的アルゴリズム

ブログ    

推薦する

科学者たちはショウジョウバエの脳をハッキングしてNLPタスクを実行し、BERTよりも効率的であることを発見した。

人工ニューラルネットワークを長い間研究した後、動物の答えをコピーして貼り付ける方が良いのでしょうか?...

人工知能の10大技術分野

[[357814]]これを読んでいるあなたは、目の前のウェブサイトから CT スキャンの読み取りまで...

優れたビジネス機械学習のユースケース 5 つ

ビッグデータと機械学習を組み合わせることで、ビジネスの競争優位性を獲得するために必要な、すでに保有し...

Nvidia、世界最速のAIスーパーコンピュータがイタリアにやってくると発表

エヌビディアは木曜日、同社の高速コンピューティングプラットフォームを使用して、世界最速のAIスーパー...

サイバーセキュリティにおける人工知能の利用を妨げる5つの障壁

外資系サイバーセキュリティ企業サイランスは、人工知能(AI)アプリケーションの導入を阻む2つの主な障...

機械学習の博士課程での私の経験から得た洞察

2020 年は非常に困難な年でしたが、私にとってはコーネル大学でコンピューターサイエンスの博士号を取...

世界で最も賢い人たちは AI についてどう考えているのでしょうか?彼らは13の主要な発展傾向を予測している

[[219763]]著者:ROSIEBROWN編纂者:彭祥偉、江宝尚、小玉ウォール・ストリート・ジャ...

AGI は 1 年以内に登場しますが、人類には 5 年しかありませんか?

OpenAIは今年初めにSoraを発表し、世界中に衝撃を与えた。数年前まではまだ、この大柄なモデル...

ビル・ゲイツ:この伝染病は[諸刃の剣]であり、人工知能はエイズとCOVID-19を治すと期待されています!

序文:科学技術界の頂点に立つビル・ゲイツ氏は、2015年にTEDで「今後数十年のうちに、核戦争よりも...

適切な機械学習アルゴリズムを簡単に選択する方法を教えます。

[[327632]] 【51CTO.com クイック翻訳】この質問に対する単純で明確な答えはありま...

...

Puyuanはインテリジェントなビジネスプロセスを推進:「BPM+RPA」が進行中で、企業のデジタル変革を実現

世界的なデジタル変革ブームが到来し、ビジネス環境が急速に変化する中、業界の再編と再編が加速しています...

...

...

...