• ベストアンサー

ハッシュとツリー構造

今学校でハッシュとツリー構造について勉強しています。 しかし、先生の言っていることがまったく意味が分かりません。 すいませんが、ハッシュとツリー構造について簡単でいいので教えてください。 お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • ymmasayan
  • ベストアンサー率30% (2593/8599)
回答No.2

まず、ハッシュとツリー構造は全く別です。 ハッシュ・・ごちゃ混ぜにするという意味ですね。   余談ですがハヤシライスはハッシュド・ライスらしいです。   コンピュータ関係では2つの意味で使われます。  1.データーをある限られた数の区画に配置するときに   キーを区画の数で割って余り(+1)の番号の場所に格納する   と言うことを良くやります。   同じ方法を使えばすぐ見つけられるからです。   この操作(演算)をハッシュとかランダマイズといいます。  2.あるテキスト(文字列)の中から飛び飛びに文字を抜き出して   新しい文字列を作ることを言います。   暗号に関連したデジタル署名の時に使います。 ツリー構造:男系の系図を思い浮かべてください。   データを親子関係で表したものがツリー構造です。   系図を上下さかさまにすると「木:ツリー」に見えませんか。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • furyfox
  • ベストアンサー率56% (58/103)
回答No.1

>ハッシュとツリー構造について簡単でいいので教えてください。 ハッシュとツリー構造の利点はわかりますか。 10万件の文字列データの中から「あいうえお」を検索しようとしたとき、データを1件目から順に検索したのでは遅いですよね? 仮に「あいうえお」のハッシュ値が5741という値だったとします。 ならメモリー上の5741番地に飛べばすぐに該当するデータ「あいうえお」が見つかるというのがハッシュの仕組みです。 ツリー構造の場合も同じように検索するデータが大体どの辺にあるのかを データの構造的にわかるため、少ない検索回数で該当するデータを見つけられるのです。 W07A09さんがどの部分でいきづまっているのか分かりませんが、ハッシュ値の計算方法でも 色々ありますしその意味を理解するには数学の知識が必要になります。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ツリーコントロールとツリー構造のデータとのリンク

    ツリーコントロールとツリー構造のデータとのリンク 私が開発しているソフトウェアは、データ構造として ツリー構造を使っています。このツリー構造のデータ を表示するためにツリーコントロールを使って いますが、データとツリーコントロールのリンクする 方法として良い方法を探しています。 ここでいう「リンク」とは、例えば ツリー構造のデータにデータの追加や削除が おこなわれた場合、該当するツリーコントロールの データも追加と削除をおこなう。ことです。 現時点では、ツリー構造のデータにデータの追加や 削除がおこなわれたら、ツリーコントロールに SendMessageを送ってツリーコントロール側の データの追加や削除をおこなっています。この場合、 ツリー構造のデータのクラスに、GUIのクラスの ポインタを保持しています(ツリーコントロール へのSendMessageのためにCWnd*を保持している)。 データにGUIに関わるコードが存在するので、 GUIに依存しない方法に変えたいのですが、みなさんは このような場合はどうしていますか? ちなみに現時点では、Design PatternのObserver Patternを採用してみようと思っています。 他に良い方法があれば教えてください。 よろしくお願いします。 開発環境:VC++6.0, MFC

  • スカイツリーの鉄骨構造について~

    いよいよスカイツリーが、公開されましたが、展望台から眺めてみたい・・と言う気持ちもありますが、 600メートルもの塔を支えている鉄骨構造に興味を持っています。 どなたか、スカイツリーの鉄骨構造面を解説しているサイトがあれば、教えて下さい。

  • ファイルのツリー構造がわかる状態で印刷するには

    ハードディスク内に約1900のファイルがツリー構造で保存されています。 このファイルリストをツリー構造のわかる状態で印刷したいのですが、何かいい方法はありますでしょうか?

  • PHPでの再帰を用いたツリー構造について

    PHPを勉強中の初心者です。PHPで、ツリー構造を再帰関数を用いて実装するプログラムを作成し、そのツリーを表示しようとているのですが、どうもよくわかりません。 このプログラムの挙動としては、以下でクリエイトしたTreeオブジェクトを、preorder(トップダウン、左側から)で出力させるもので、期待値は以下のとおりです。 (期待値) preorder: 1 2 4 5 3 6 7 (クリエイトされたオブジェクト) $myTree = new Tree(1, new Tree(2, new Tree(4), new Tree(5)), new Tree(3, new Tree(6), new Tree(7))); =========サンプルプログラム================================ #!/usr/bin/env php <?php class Tree { var $top; var $left; var $right;     #コンストラクタを定義はこれであっているでしょうか。 function Tree($top, $left, $right){ $this ->top = $top; $this ->left = $left; $this ->right= $right; }; function preorder( ){         #preorder() メソッドを実装方法がよくわかりません。 } } $myTree = new Tree(1, new Tree(2, new Tree(4), new Tree(5)), new Tree(3, new Tree(6), new Tree(7))); function printPreorder($tree) { echo "preorder:\n"; $tree->preorder(create_function('$v', 'echo "$v\n";')); } printPreorder($myTree); ?>

    • 締切済み
    • PHP
  • ディレクトリ構造の表示

    任意のディレクトリ構造を分析してその構造(ファイル名をkey)をXMLなりハッシュに吐き出すことができるモジュールなり方法を模索しています。 XMLでいうXML::Simpleみたいなものです。 参考------------------------------------------------------ 【XML分析:XML::Simple】→【ハッシュ:Data::Dumper】 【XML分析:XML::Simple】→【XMLファイル:XML::Simple】 ---------------------------------------------------------- グーグルなどで検索してみた限りでは、任意のディレクトリ内分析をしてくれてXMLなりハッシュに吐き出してくれるモジュールはなさそう。 そこでFile::Pathを使ってディレクトリ内を洗ってその構造を動的にハッシュにしたいと考えいます。しかし残念なことに予め構造がわかっている規則的なデータを動的にハッシュにすることはできるのですが、実際に分析するまでその階層すらわからない不規則なツリー状のデータ構造を動的にハッシュ化するプログラミング能力を持ち合わせていません。 そこで質問しかないということになりました。ぜひお知恵をお借りしたいと思っています。よろしくお願いいたします。 本当に簡単ですがこのような不規則なディレクトリ構造を動的にハッシュにしたいと思っています。この例ではディレクトリ構造がわかってますが、分析するまでわからないものとしてみて頂ければと思います。 test1(dir)―――――test2(dir)――――――――data1.txt(file)            |           |            ―data1.txt(file)   ―data2.txt(file)            |            ―data2.txt(file) $test1 = {       'test2' => {            'data1' =>                          {                       'path' => 'test1/data.txt',                       'parent_dir' => 'test2'                         },            'data2' =>                          {                       'path' => 'test2/data.txt',                       'parent_dir' => 'test2'                         },                 },       'data1' =>                     {                  'path' => 'test1/data.txt',                  'parent_dir' => 'test1'                    },       'data2' =>                     {                  'path' => 'test2/data.txt',                  'parent_dir' => 'test1'                    }     };

    • ベストアンサー
    • Perl
  • ハッシュって?

    Perlで、「ハッシュ」という概念が出てきますが、 どのような意味ですか? どんなプログラムを作成する時に便利なのでしょうか? なるべく早くお答えいただいた方からポイントを差し上げます。

    • ベストアンサー
    • CGI
  • Perlでいうハッシュとはどのようなものでしょうか?

    パールを勉強しています。 ハッシュとはどのようなものでしょうか。

    • ベストアンサー
    • Perl
  • ハッシュガールって?

    Instagramでモデルさんたちがハッシュガールって言葉を使ってるんですがどういう意味なんでしょうか?

  • Javaのハッシュコードについて

    SunJava2認定ガイドでJavaを勉強している初心者ですが、「オブジェクトとコレクション」を説明した章(第7章)に、 ・2つのオブジェクトがequals()メソッドで等しいと判定された場合、 両者のハッシュコード値は同じでなければならない ・2つのオブジェクトを等しいと見なすためには、両者のハッシュコー ドも等しくなければならない という記述がありますが、この2つのオブジェクトのハッシュコードというのは2つのオブジェクトを指すそれぞれの参照変数であると理解していいのでしょうか? … もしそうであるなら、2つのオブジェクトが等しいという意味は、2つのオブジェクトは同一であるということを意味することになるのでしょうか  どなたかご教示ください

  • Webサーバー上のツリー構造の一覧取得

    会社のWebサーバー上のツリー構造の一覧のようなものをテキストその他で得る方法はありますでしょうか。 FilezillaなどのFTPソフトで表示させると、ツリー構造は出ます。 その構造自体をテキストで得ることはできますでしょうか。 PC上のファイル構造をテキストで得るフリーソフトはいくつかあるようです。 ウェブサーバーとパラレルになっているファイル構造自体が、社内にあれば、それをテキスト化すればよいのですけどもそれがないです。(ちぐはぐに、様々なLPを作成し、ドメインもいろいろあり、担当者ごとにアップロードしていっている) FTPソフトですべて、構造ごとダウンロードして、それをフリーソフトでテキストで出せば可能と思われますが、分量が結構でかいです。 良い方法があれば、教えていただけますでしょうか。