複角網を3Dのスカラールフィールドから抽出してみたことはありますか? いや? 1987年、ジェネラル・エレクトリックの2人のプログラマーが、マッチング・キューブ(Marching Cubes)アルゴリズムを発明し、医師が医療スキャンを3Dモデルに変えることができ、文字通り何百万人もの命を救った理由です。 それがアルゴリズムの力です。 いくつかのアルゴリズムは速い、いくつかのアルゴリズムはエレガントで、いくつかのアルゴリズムは奇妙で、魔法のように感じる。 Whenever you instruct a machine to solve a problem with code, you’re designing a procedure to transform bits into meaning このストーリーでは、これまで発明された最も奇妙で明るいアルゴリズムの10つに潜入し、ミリ秒で数十億行のコードを検索し、無から無限の地図を生成し、量子の奇妙さを実用的な論理に変えることができます。 タイトル:Wave Function Collapse 科学で最も奇妙なものの一つは、二重切断実験です:あなたが見ていないときに粒子は波のように振る舞いますが、あなたがそれらを観察する瞬間、それは粒子のように場所に突入します。 「波の機能が崩壊する」というこのアイデアは抽象的に聞こえるが、驚くほど実用的なアルゴリズムに変えられた。あなたがサイドスロールのビデオゲームマップを設計していると想像してください。 最初は、地図の各テーブルは「波」のように - それはまだ具体的な何もありません. それは可能性に満ちています. しかし、プレイヤーが前進するにつれて - 世界を観察する - アルゴリズムは不確実性が「崩壊」します. 世界は特定のテーブルに固化しますが、それはあなたが設定したルールに従ってそうします. 道路が接続し、川が流れるところに流れ、すべてが意図的に設計されたように感じます。 それは目的を持ったランダム性であり、すべて生成型AIの一部なしで、それは単に奇妙で美しい論理です。 #2 拡散モデル 本当に変だ!本当に変だ。 DALL·E や Stable Diffusion などのイメージジェネレータの背後にあるテクノロジーは、熱力学のアイデアに基づいています:粒子が自然に高濃度の領域から低濃度の領域に広がる分散。 機械学習では、そのプロセスが逆転します。 秩序から混沌に移行する代わりに、アルゴリズムは、猫の画像のように純粋な騒音から始まり、それを徐々に有意義なイメージに改良する方法を学びます。 しかし、これをうまく行うにはモデルが必要です. 拡散アルゴリズムは2つの段階で動作します。 まず、トレーニング中に、モデルはリアルな画像を撮影し、徐々にそれらが認識できないまで前進プロセスで騒音を追加します。 これを数百万のラベル化された画像で行うと、あなたはゼロから新しいイメージを夢見ることができるモデルを得る。宇宙の猫。ピクサーのスタイルの古代ローマ。超現実的なアボカド椅子。 それはコンピュータの重さです。しかしそれは画像に止まらない。ディスファッションはすでに私たちが音楽、オーディオ、そして次にビデオを生成する方法を再構築しています。 #3 - シミュレートアネリング プログラミングの最も困難な部分の1つは、ほとんど1つの正しい解決策が存在しないということです - 良いものだけの海と、いくつかの素晴らしいものだけです。 Simulated annealing は、金属が欠陥を除去するために繰り返し加熱および冷却される金属の金属工学から名前を借りています。同じ概念は最適化に適用されます。 あなたが山脈で最も高い頂点を探していると想像してください。基本的な丘を登るアルゴリズムは、あなたを最初の衝撃に閉じ込めます。しかし、シミュレートされたアナリングはより賢いです。それは高い「温度」から始まります、それは自由に探索することを意味します - 時には地元のから逃れるために最悪の道を採用することもあります。 温度が徐々に下がるにつれて、それはよりピクチャーになり、最良の動きだけに落ち込んでいます。 交換は、探検と取です。そしてそれはコードで役に立つだけでなく、コードを学ぶための良い比でもあります。初めは、言語、ツール、フレームワークの間で反転しますが、最終的には、あなたは冷やし、ロックし、専門化します。 #4 睡眠 あなたはアルゴリズムについて話すことができず、分類を起こすことなく - そして、おそらく最も馬鹿げた賢い(そして完全に役に立たない)発明は、 . 黒い眠り 従来のアルゴリズム、例えば、 または , divide-and-conquer 戦略を使用して、再発的にアレイをサブアレイに分割し、それらを効率的に分類します。 クイック メルセデス それは次のように機能します: 配列の各数に対して、新しいスレッドを開始します. 各スレッドはその値に等しい数ミリ秒間眠り、その後、目覚めるときに番号を印刷します. より小さい数字が眠っているため、より早く印刷されます。 スマートな部分? それはすべての通常の論理を飛び越え、CPUのスレッドスケジュールを分類エンジンに変えます. 比較なし. 再発なし. 寝て印刷するだけです。 しかし、それは非常に非実用的です。 ネガティブな数、複製、または大きな値を破ります。 それはまた、数ごとに1本のスレッドを作成するのに効率がありません。 それは睡眠のタイミングに依存します、それは非常に正確ではありません。 睡眠の分類は、楽しくも役に立たない - 賢いことは必ずしも役に立つことを意味するわけではありません。 第5話 神さま BogoSortはジョークアルゴリズムです:それは、純粋な幸運によって、結果が分類されるまでランダムに数値を繰り返し変換します。 今、これを量子力学と多宇宙のアイデアと組み合わせることを想像してください。理論的には、無限の並列宇宙にすべての可能な結果が存在する場合、それは存在します。 あなたのマレージがすでに整理されている宇宙。 いくつか テクノロジーはまだそこにありませんが、「量子BogoSort」は、すべての可能性を一度に生み出し、次に、量子ランダムがあなたのために仕事をすることを本質的に許可することによって、宇宙に即座に崩壊します。 もちろん、これはサイエンスフィクションであって、コンピュータサイエンスではありません。我々は、意欲的に多宇宙を観察したり崩壊したりすることはできません。しかし、それは論理的(そして馬鹿げた)極端に取られたブルート・フォースの偶然性についての遊びやすい思考実験です。 #6 - ボーイ アルゴリズムについて本当にカッコいいと思うのは、彼らが時々自然を映し出すことができる方法です. Craig ReynoldsのBoidsプログラムを1986年から取る - それは最初の人工生命シミュレーションの1つであり、それは鳥の群れを模しています。 こんなに生きてる 感じる それぞれの鳥(あるいは「ボイド」)は、隣人(分離)に衝突するのを避け、その方向に向かって調和し、地元の集団の中心(連帯)に向かって移動するという3つのルールに従います。 しかし、あなたがこれらのシンプルな行動の群れを一緒にシミュレートすると、あなたは本物の群れのように変化し流れる魅惑的で有機的なパターンを得ます。 The beauty here is not in the code. それはコードの中にあるのではない。 これらの複雑なグループダイナミクスは明示的にプログラミングする必要はありません. They just happen. It’s like stumbling on nature’s cheat code for decentralized coordination. これらの複雑なグループダイナミクスは単に起こります。 出現 #7 - SHORのアルゴリズム 人々が彼らのメールボックスをロックし、彼らの手紙をユニークな署名で署名することを可能にするというアイデアは、暗号学における重要な概念に基づいています:大きな数字を要因化する困難さ。 ほとんどの暗号化方法の背後にあるセキュリティは、この単純な数学的現実に依存します - 大数を複数することは簡単ですが、製品の背後にある2つの元素数を調べることは簡単です。 として知られる問題 非常に難しいし、時間がかかります。 — prime factorization — 実際には、量子コンピュータを使用し始める場合がない限り、ノートパソコンの解決には数百万億年かかる可能性があります。量子コンピュータは、シャーのアルゴリズムのようなアルゴリズムのおかげで、どの古典的なアルゴリズムよりも膨大に速く、整数要因化の問題を解決する可能性があります。 Shorのアルゴリズムは、従来の方法よりもはるかに速く、大きな数を主要な要因に分解することができます. Prime factoring はかなり単純ですが、このアルゴリズムがどのように機能するかは、物事が本当に奇妙になります。 シャーのアルゴリズムの中心には、クビット、上位位置、混乱などの量子力学の概念があり、これらは量子コンピュータが巨大な計算を並行して実行することを可能にし、古典的なコンピュータはそれに近づくこともできません。 アルゴリズム自体は正当なものであるが、現実世界でのアプリケーションはまだ初期段階にある。実際には、量子コンピューティングを使用した最大の数値はたったの21である。 最近、中国のチームは量子コンピュータを使用して巨大な数値を計算することに成功しましたが、より大きな数値に対して適切にスケールできないアルゴリズムを使用しました。 しかし、もし量子コンピュータが十分に強力になり、誰かがこれらのアルゴリズムを真に大きな数にまで拡大する方法を見つけたら、サイバーセキュリティの世界で深刻な混乱を予想してください。 #8 - マッチング キューブ このストーリーの初めに、私たちはMarching Cubesアルゴリズムについて言及しましたが、それは3Dデータを視覚化するための大きな転換点だったため、特に医学で浸透する価値があります。 MRIは3Dモデルを提供するのではなく、巨大な数字のキューブ - 3Dスカラールフィールドを想像してください。そのフィールドの各点は、組織密度や信号強度のようなものを表す値を持っています。このデータは空間の中で継続的ですが、コンピュータが描くことができる表面、形状、何かを視覚的なものに変える必要があります。 このアルゴリズムはこの3Dフィールドをとり、一度に1つの小さなキューブを移動します。 次に、これらの8つのポイントのそれぞれが、値段の上または下にあります(たとえば、皮膚が骨に変わる場所です)。 それはあなたに8ビットの数を与えます - 各小さなキューブのための256の可能な組み合わせです。 それらの組み合わせのそれぞれのために、特定の三角形のパターンが事前に計算され、検索テーブルに保存されています。 これらの三角形は、そのキューブを通過する表面を比較するために使用されます。 このプロセスを繰り返すことによって - キューブからキューブへと進み、値に接続し、形を調べる - アルゴリズムは徐々に完全な3Dメッシュを構築します。 これは、1980年代にフラットMRIまたはCTスキャンを実際の3Dモデルに変えたため、医師が回転し、拡大し、分析することができます。 #9 - 実践的なビザンチンの過ち容認 現代のコンピューティングでは、我々はしばしば分散型システム - クラウドに広がるコンピュータのネットワーク - で働いています. それは、分散型コンピューティングの最も有名な問題の1つにつながります:ビザンチン将軍問題。 ビザンチンの軍隊からいくつかの将軍が都市を包囲しています。彼らは勝利するために同時に調整し、攻撃する必要があります。しかし、彼らはメッセージを送信することによってのみコミュニケーションすることができ、それらの将軍のいくつかは計画を破壊しようとする裏切り者かもしれません。 コンピュータは同じ課題に直面します。分散型システムでは、一部のマシンが故障したり、遅くなったり、ハッキングされたりすることもあります。 PBFT はこれらの種類の失敗に対処するように設計されています。 それは、1 つのノードが「事前準備」メッセージを送信することによってアクションを提案することによって機能します。他のノードは承認で応答します。 特定のノード数(通常は3分の2以上)が合意すると、コンセンサスに達します。 最後に、オリジナルのノードは「コミット」メッセージを送信し、すべての人がアクションを実行するように言います。 ノードの3分の1までが欠陥または悪意がある場合でも、システムはまだ正しく機能することができます。 PBFTのようなアルゴリズムは、ブロックチェーンシステムと分散型クラウドデータベースの背骨であり、物事が間違っている時でも一貫性と信頼性を保つのに役立ちます。 #10 - ボイヤー・ムーア そして最後に、それは今日私たちが使用する最も速いツールの一部を静かにパワーアップする古いアルゴリズムに私たちを導きます - grep. It is called the Boyer-Moore string search, and it recently blown my mind because of how counterintuitive it is: the longer the text, the が得られる。 スピード ほとんどの基本的な検索アルゴリズムは左から右に移動し、それぞれの文字を1つずつチェックします。 検索パターン内で、2 つのスマートなトリックを使用して、テキストの大きい部分を飛ばします。 「巨大なテキストブロックの中に。 right to left “needle 1. Bad character rule: あなたが「ネイル」を検索し、現在のテキスト文字が「z」である場合は、試合がその時点でまたはそれ以前に始まる方法はないので、文字ごとに文字をチェックする代わりに、アルゴリズムは6つの位置 - 「ネイル」の完全な長さ - を前進し続けます。 2. Good suffix rule: あなたが「ネイル」を検索し、最後に「dle」と一致しただけで、次のキャラクターがマッチを破る場合、アルゴリズムは次の文字から再起動しません。代わりに、それは「dle」が「ネイル」でより早く現れるかどうかを尋ねますか? もしそうなら、それは以前の「dle」がラインアップするようにパターンを変更します。 These heuristic skip strategies are not perfect, but they are. これらのヒューリスティック・スキップ戦略は完璧ではありませんが、彼らは brute force より効率的です。 道 結果は? テキストが長くなると、アルゴリズムはますます多くの文字を飛び越え、入力のサイズに比べて速くなる傾向があります だからこそ、grepのようなツールは驚くほどの速度でギガバイトのログを咀嚼することができ、何十年も前のこのアルゴリズムが今でもブラックマジックのように感じられる理由です。 When Logic Meets Imagination: The True Power of Algorithms(論理が想像力と出会うとき:アルゴリズムの真の力) 量子不確実性を実用的な画像生成に変えたり、生物学的な群集行動を3つの簡単なルールで模したり、テキストを後方に検索してパターンをより速く見つけたり、これらのアプローチは、最も非伝統的なアイデアがしばしば最も強力なソリューションにつながることを示しています。 これらのアルゴリズムを素晴らしいものにするのは、その効率性や新しさではなく、彼らの大胆さです。彼らは仮定に挑戦します。彼らは問題を頭に置きます。彼らはランダム性を構造に、混沌を秩序に、抽象的な理論を現実世界の影響に変えます。 優雅な数学ツール以上に、これらの10の奇妙なアルゴリズム . are a testament to human ingenuity もっと頻繁に聞きたいですか? ↓↓ ! Connect with me on LinkedIn Linkedinで私とつながる シェア 行動可能な洞察、ヒント、およびアップデートは、貴重なエラーを回避し、AIの世界で最前線に留まるのに役立ちます。 日常 あなたはテクノロジーの専門家で、書くことによってあなたの視聴者を成長させたいですか? ↓↓ ! ニュースレターをお見逃しなく♪ ニュースレターをお見逃しなく♪ わたし アクティブなコピーライティングと視聴者構築戦略でいっぱいで、何百人もの専門家が立ち上がり、成長を加速させることができました。 Tech Audience Accelerator