情報処理のWeb教科書―IPA情報処理試験対策のお供に!
トップ 情報処理の知識体系 テクノロジ系 基礎理論 アルゴリズムとプログラミング アルゴリズムとデータ構造 データ構造の種類 木構造
木構造の種類についてまとめています。根、葉、枝などの用語のやさしい説明から、順序木、2分木、多分木、b木、b+木、バランス木などの考え方やイメージ、計算量、ヒープ、幅優先探索など、情報処理の過去問と合わせてまとめました。
この記事の目次です。
木構造とは、グラフ理論という数学の1分野の木の構造をしたデータ構造のことをいいます。 英語で「tree structure」とつづります。木構造のことを単に「木」と呼ぶこともあります。
木に関する用語を見ていきます。
子ノード数での分類した2分木と多分木、すべての葉について、深さがほぼ等しいバランス木、ヒープ、デジタル木など多数の分類方法があります。 以降の章で、順序木、2分木、多分木、b木、b+木、バランス木、ヒープなどの木構造の種類をまとめています。
多分木とは、兄弟の数がn以上である順序木のことをいいます。
節にデータを格納するとき、一定の順序で格納してある木を順序木といいます。
葉以外の節が2つまたはそれ以下の子を持つような順序木を2分木といいます。
節が持つこの数で順序木の種類を分類するとき、この最大数をkとすると、2分木はk=2、一般的にk≧2の場合、多分木といいます。
B木とは、木構造をもつデータ構造の1つで、多分木を基にしたバランス木です。 節を複数持つことができる木構造で、階層の深さが同じになるように、ノードの分割と併合を行います。
B木はバランス多分木ともいい、枝が複数ある木構造のうち、根からすべての葉の深さが同じで、枝が一方向に偏らないような 構造の木のことをいいます。
B木は、次のような制約を持ちます。
以下はB木のイメージです。 各節点に4個のキーを格納し、5本の枝を出し、根の深さがレベル2まであるB木になります。 このB木には、レベル0がキー4個、レベル1がキー20個、レベル2がキー100個、合計124個のキーが格納されています。
B木は、階層型データベースなどで利用されるデータ構造です。
バランス木について補足です。
バランス木とは、節の追加や削除が発生するごとに、木構造全体を再調整する機能を持つ木です。 特定の部分木だけが伸びることを防ぐために、バランス木の各部分木は左と右の深さの情報を持っています。
B+木は、B木から派生したB木の変種でキーを指定することで挿入・検索・削除が効率的に行える木構造の一種です。
B+木インデックスのが定義されている候補キーを利用して、1件のデータを検索するとき、データ総件数Xに対するB+木インデックスを格納するノードへのアクセス回数のオーダを表す式はlogXです。
1つの接点にm個の枝があるB+木があるとします。 根から順に範囲を狭めながら探索していきますが、B+木のバランスの取れた木ですので、深さが1つ深まると探索対象が1/mに減ることが見積れます。 最終的に探索範囲が1、つまり「X/mのt乗=1」となるまで探索するのが最悪の探索回数となります。
これをtの式に直すと、「t=logmX」となります。 オーダーで考える場合には、対数の底は考える必要ないのでlogXとなります。
データ構造やヒープ領域とは何かなど、ヒープをテーマに情報をまとめています。
木の節をなぞることを木の探索あるいは走査、巡回といいます。 なぞり方を大きく分類すると、幅優先探索と深さ優先探索に分けられます。 ここでは幅優先探索について見ていきます。
幅優先探索とは、木構造の始点から近い順に1つずつ調べていく探索法のことをいいます。
幅優先探索のなぞり方は、木のレベル0から始めて、同じレベルの左から右になぞり、右端まで来たら下のレベルに移って、同じようになぞります。
以下では木構造に関連したIPA情報処理試験の過去問とその解説をまとめています。
基本情報など情報処理試験対策用の解説。このページではアルゴリズムとデータ構造について解説しています。
情報処理試験対策用のサイトオリジナル教科書をテーマにテクノロジ系の知識をまとめています。
Copyright (C) 2010-2023 情報処理のWeb教科書. All Rights Reserved. Loarding…