タグ

algorithmに関するvladimir-kyotoのブックマーク (24)

  • アルゴリズムをビジュアル表示できコードでも確認できるサイト「Algorithm Visualizer」 - GIGAZINE

    アルゴリズムをプログラムで表示した場合、アルゴリズムの概念自体が複雑な上に抽象的なコードのせいもあって、実行されるアルゴリズムのプログラムをイメージするのは難しいものです。そんな抽象的なアルゴリズムのプログラム学習には、コードだけでなく、実際にプログラムを走らせるときのログを表示しつつ、アルゴリズムをビジュアル化してくれる「Algorithm Visualizer」が非常に役に立ちます。 Algorithm Visualizer https://algorithm-visualizer.org/ Algorithm Visualizerは、バブルソートやバイナリーサーチ(二分探索)などのアルゴリズムを、プログラムとして表示させつつ、実際に実行した場合の動きを可視化したりログ化したりすることで、アルゴリズムの理解を深められるサービスです。 ページ左にアルゴリズム名がずらりと並んでおり、選択し

    アルゴリズムをビジュアル表示できコードでも確認できるサイト「Algorithm Visualizer」 - GIGAZINE
  • 停止性問題 - Wikipedia

    この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方) 出典検索?: "停止性問題" – ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL(2018年1月) 計算可能性理論において停止性問題(ていしせいもんだい、英: halting problem)または停止問題は、「どんなチューリングマシン[注 1]、あるいは同様な計算機構についても、それが有限時間で停止するかを判定できるアルゴリズム」は可能か、という問題。 アラン・チューリングは1936年、停止性問題を解くアルゴリズムは存在しないことをある種の対角線論法のようにして証明した。 すなわち、そのようなアルゴリズムを実行できるチューリングマシンの存在を仮定すると「自身

  • AVL木で木構造を学ぼう (1/2)- @IT

    第3回 AVL木で木構造を学ぼう はやしつとむ アナハイムテクノロジー株式会社 2009/4/13 オブジェクト指向によって、アルゴリズムは隠ぺいされていることが多くなった。しかし、「用意されていない処理」が求められたときに対応できるだろうか(編集部) 第2回「単純なキューと循環キュー」では、循環キュー構造を実装したCyclicQueueの解説と、TListやLinkedListを利用したキューについての比較を行いました。 今回は、木構造を取り上げます。引き続き筆者はDelphi 2009でサンプルプログラムを作成していますが、Delphiをお持ちでない方は下記のURLからTurboDelphiをダウンロードしてぜひインストールして見て下さい。 木構造とは何か? 木構造は、データの関係を根(ROOT)から複数の枝(EDGE)をたどって節点(NODE)を経由しながら葉(LEAF)へと至るよう

  • サービス終了のお知らせ

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

  • Red–black tree - Wikipedia

    In computer science, a red–black tree is a self-balancing binary search tree data structure noted for fast storage and retrieval of ordered information. The nodes in a red-black tree hold an extra "color" bit, often drawn as red and black, which help ensure that the tree is always approximately balanced.[1] When the tree is modified, the new tree is rearranged and "repainted" to restore the colori

    Red–black tree - Wikipedia
  • SimpleBoxes | ツリー構造 (多分木 : N 分木) の実装

    多分木と呼ばれるツリー構造は、親となるノードに、複数の子ノードがぶら下がるような形になっています。 この時、ひとつのノードに下に最大 2 つの子ノードしか存在できないようなツリー構造を「二分木」と言います。 WindowsMac OS X で利用できるディレクトリ構造もツリーで表現できますし、JavaScript などで利用する DOM もツリー構造になっています。 root n1 n1-1 n1-1-1 n1-2 n2 n2-1 n2-2 n2-2-1 n3 n3-1 ツリー構造を表現する構造体 ここでは、C 言語で実装してみます。 perl, javascriptphp などのスクリプト言語への変換はそれほど難しくないでしょう。 ノードの構造は、以下のように記述できます。 typedef struct node { struct node* child; struct no

  • サービス終了のお知らせ

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

  • 目指せプログラマー!

    目指せプログラマー!にようこそ。 当サイトはこちらに引っ越しました。 お手数をおかけしますが、上記サイトへご移動くださいませ。

  • 赤黒木 - BugbearR's Wiki

  • サービス終了のお知らせ

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

    vladimir-kyoto
    vladimir-kyoto 2009/12/13
    赤黒木
  • サービス終了のお知らせ

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

  • 赤黒木 - Wikipedia

    赤黒木(あかくろぎ)は、コンピュータ科学のデータ構造である平衡二分木の一種で、主に連想配列の実装に用いられている。2色木、レッド・ブラック・ツリーともいう。 このデータ構造は1972年のルドルフ・ベイヤー (en:Rudolf Bayer) の発明である"symmetric binary B-trees"が元となっており、赤黒木という名前自体は 1978年にレオニダス・ギッバス (en:Leonidas J. Guibas) とロバート・セジウィック (en:Robert Sedgewick) によって発表された論文による。 赤黒木は、探索、挿入、削除などの操作における最悪時間計算量がO(log n)(nは木の要素数)と短く、複雑ではあるが実用的なデータ構造として知られている。 この日語版は概要のみの解説であり、具体的なアルゴリズムはwikipedia英語版(Red-black_tree

    赤黒木 - Wikipedia
  • 2-3-4木 - Wikipedia

    2-3-4木(2-3-4き、英: 2-3-4 tree)または2-4木は計算機科学の用語であり、4次のB木(英: B-tree)と同じである。 一般に2-3-4木はB木のように辞書として使うことができる平衡木の一種である。探索、挿入、削除をO(log n)で行うことができる。ここでnは木の要素数である。 2-3-4木は木の操作において多くの特別なケースが存在するので大半のプログラミング言語において比較的実装が難しい。赤黒木(red-black tree)の方が実装が簡単で代わりに用いられる傾向がある。 背景[編集] 2-3-4木は要素と呼ばれる単一の項目としてデータを格納する。 それら要素はノードにまとめられる。ノードは以下のうちどれかである。 2-nodeの場合は、1つの要素と2つの子をもつ。 3-nodeの場合は、2つの要素と3つの子をもつ。 4-nodeの場合は、3つの要素と4つの子

    2-3-4木 - Wikipedia
  • C言語講座:マージソート

    [基数ソート]←このソース→[ビンソート] /* マージソート */ /* 今日は、マージソートについて学びます。マージ( merge )とは、混ぜるということで、マージソートでは、配列の要素を二つに分け、混ぜる直前にソートします。 マージソートでは、配列の要素をコピーする作業用配列が、重要な役割を果たします。 int temp[MAX_DATA] マージソートは、下に示すアルゴリズムで、ソートを行います。 要素が一つなら、何もせずリターン。 要素が二つなら、要素を二つに分けて作業用配列にコピーし、 小さい方を配列の先頭に戻し、大きい方を配列の末尾に戻す。 要素が三つ以上なら、要素を二つに分けて、 再帰的にマージソートを呼び出し、上の操作を行う。 再帰的なマージソートの呼び出しでは、要素数が一つになるまで、何もせず分割を続けます。再帰から戻る時、要素の大きさを比較して、小さい方から配列に戻

  • ヒープソートのアルゴリズム

    CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

    ヒープソートのアルゴリズム
  • サービス終了のお知らせ

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

  • 非再帰版クイックソート for Java - kkobayashi_a’s blog

    ちょっと必要になったので。 import java.lang.*; public class XXXXX{ static final int ARRAYSIZE = 20; public static void main(String args[]){ int array[] = new int[ARRAYSIZE]; for(int i=0; i<ARRAYSIZE; i++){ array[i] = (int)(Math.random()*ARRAYSIZE); } for(int i=0; i<ARRAYSIZE; i++){ System.out.println(array[i]); } System.out.println("----------"); QuickSort qs = new QuickSort(array); qs.sort(); qs.print(); } }

    非再帰版クイックソート for Java - kkobayashi_a’s blog
  • 再帰処理のクイックソート vs 非再帰処理のクイックソート

    なるエラーでプログラムが続行できなくなる不具合に悩みました。そこで、今まで記述したことのない非再帰処理のクイックソートに書き直すことになりました。 僕の業は VBA でないので、これ以上詳しい Excel VBA のソートのお話しは以下のサイトをご覧下さい。 さて、以下の説明は VBA に実装する前に作成した Perl 版クイックソートに説明を切り替えます。 まずは単純に再帰処理のクイックソートを実装してみる sub qsort_normal() { my $array = shift; my $left = shift; my $right = shift; my ($i, $j, $pivot, $tmp); if ($left < $right) { $i = $left; $j = $right; $pivot = $array->[($left+$right)/2]; whil

  • サービス終了のお知らせ

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

  • C言語講座:クイックソート

    [ヒープソート]←このソース→[メモリの割り付] /* クイックソート */ /* 今日は一連のソートのアルゴリズムの学習の総仕上げとして、クイックソートについて学びます。クイックソートは、名前の通り高速なソートです。クイックソートのアルゴリズムについて説明します。 int 型の配列 x[ ] をソートするとします。 配列の中央付近の要素の値を基準にします。 配列の添字の小さい方から基準値に向かって、 基準値より大きい値を探します。 配列の添字の大きい方から基準値に向かって、 基準値より小さい値を探します。 見つかったら、双方を交換します。 これを両者が衝突するまで行います。 その結果基準値より小さな値が、基準値の左に、大きな値が右にきます。 次いで、基準値の左の配列と右の配列に対して、同じ操作をします。 配列の要素が 1 になるまで、上記の操作を行えば、ソートが完了します。 具体例を下記