ベストアンサー 【アルゴリズム】隣接リストに関する質問です 2014/02/04 09:04 皆さんこんにちは。当方、情報系の学生です。 こちらの問題の考え方が分からず困っています。 「下図のような無向グラフを頂点Aより深さ優先探索したところ、数字で示したように訪問順序が得られた。このとき、隣接リストはどうなるか示せ。」 自分は、単純に実線でリンクしている頂点のみをピックアップして A→C B→D C→A→F D→B→F ・ ・ ・ のようにリストにすれば良いかと考えたのですが、間違いでしょうか。 お詳しい方、ご助言いただけましたら幸いです。 よろしくお願いいたします。 画像を拡大する みんなの回答 (1) 専門家の回答 質問者が選んだベストアンサー ベストアンサー Tacosan ベストアンサー率23% (3656/15482) 2014/02/04 10:01 回答No.1 本当にそのような問題だとしたら, 問題がおかしい. 「無向グラフ」と「隣接リスト」との関係が文章に書かれていないので, 「どうなるか」といわれても答えようがない. 質問者 補足 2014/02/04 10:14 ご回答ありがとうございます。問題を見直してみたところ「無向」とは書かれておらず、「×隣接リスト→○隣接頂点リスト」でした。 ただ、これでも結局グラフとリストの関係性は曖昧ですよね... 通報する ありがとう 0 カテゴリ 学問・教育応用科学(農工医)情報工学 関連するQ&A リストの高速検索アルゴリズム 1. Aを使用→Aを登録→(A=1) 2. Bを使用→Bを登録→(B=1,A=2) 3. Cを使用→Cを登録→(C=1,B=2,A=3) 4. Dを使用→Dを登録→(D=1,C=2,B=3,A=4) 5. Bを使用→順序のみ更新→(B=1,D=2,C=3,A=4) 6. 一番古いのを削除 →Aを削除→(B=1,D=2,C=3) 上記のような1000個のデータ(A,B…)を使用したら、使用履歴に登録していくプログラムを作るとして 高速に検索するには、どうすればよろしいでしょうか。 検索したいのは以下の2つです。 ・一番古いデータの検索(削除するため) ・データが登録有無の検索 汎用的な手法があればその名称をお教え願えないでしょうか。ちなみに二分木はちょっと違うような気がしました。 巨大数生成アルゴリズム 次のようなアルゴリズムで巨大数を生成していくのは効率がいいと言えますか おそらく、いえると思いますが、これを論理的に示すにはどうしたらよいでしょうか? 1. F(a,b,0)=a+b , F(a,0,c)=a+c F(a,b,c)=F(a,b-1,F(a,b,c-1)) 2. F(a,b,c,0)=F(a,b,c) F(a,b,0,d)=F(a,b,d) F(a,b,c,d)=F(a,b,c-1,F(a,b,c,d-1)) 3. F(a,b,c,d,0)=F(a,b,c,d) F(a,b,c,0,e)=F(a,b,c,e) F(a,b,c,d,e)=F(a,b,c,d-1,F(a,b,c,d,e-1)) ・・・ おそろらく添え字か5つか6つ位でグラハム数オーダーではないかと思ったりしますが。。 いかがなものでしょうか? メーリングリストって メーリングリストについてお聞きしたいのですが、 質問1.メーリングリストって送られてくる人以外のアドレスも表示されるのですか。要するにAさんからB,C,D,E,Fに送るとBさんはC,D,E,Fのアドレスが表示されているのですか。BCCそれともCCで送られてくるのでしょうか。 質問2.同じくCさんからDさんに送ることはできるのですか、できるとしたらAさんはそれを見たり参加したりできるのですか? 隣接しないパーティッションの結合 現在、パーティションが以下のようにあります。 A|B|C|D A:リカバリデータ収納領域(18GBのうち9GB使用) B:Windows7起動情報格納(サイズ100MB) C:システムドライブ D:データドライブ 今、A(18GB)を9GBまで圧縮してEを作ります。 A|E|B|C|D EをDと結合してFを作り、最終的にこのようにしたいのです。できますか? A|B|C|F(DとE結合) 隣接するパーティションのリサイズなどは簡単にできるんですが、 この場合、パーティション位置を移動することが必要になります。 エクセルでリストを使って特定の文字列を数える エクセル2003を使っています。 シート3に A B C というリストAと D E F というリストB そして A B C D E F と一緒になっているリストCを作りました。 そしてシート1にリストCを使ってこのような表を作りました。 A D A C B D F E C B A B と選択したとします。 そのとき、左側にリストAの中に含まれている文字列を数える方法はないでしょうか。 使っているのは、 Windows XP Professional SP2 Microsoft Office Excel 2003 SP3 です。 リストファイルと一致する行の抽出 2つのファイルがありまして、list.txtでリストアップしたキーワードに一致するinput.txt一行目の行を抽出したいです. fgrep -f list.txt input.txt ではout of memoryで行えません。 他に何かいい方法がありませんでしょうか? あれば教えていただきたいです。 list.txtはsortせずにこの順序を維持したいです。 <list.txt> d c a h g x k . . <input.txt> a 12 43 .. b 29 44 .. c 12 66 .. c 33 55 .. d 44 55 .. 乗積 Π のアルゴリズム はじめまして。 質問内容が表題と多少ズレる事をご承知下さい。 アルゴリズムを教えて頂きたいと思っています。 ************************ Π(2x-1) ,x=1~m 上式においてm=3とすると、総数は15となります。 今、A~Fまで6つのアルファベットがあります。 このうち2つをペアにしてグループを作ります。 上式により、グループ総数は15となります。 ペアの組み方は以下のようになります。 <例> (1) A-B、 C-D、 E-F (2) A-B、 C-E、 D-F (3) A-B、 C-F、 D-E ・ ・ ・ (14) A-F、 B-D、 C-E (15) A-F、 B-E、 C-D ************************ このような取り方をプログラムしようと思うのですが どこから手をつけてよいかわかりません。 是非アドバイスをお願いします。 リストからの選択 エクセルにて文字を入れる際にデータの入力規制を用いてリストから選択するようにしているのですが、そのリストを可変的にしたいのですが可能でしょうか? A1のセル: A,B,C から選択 A2のセル: A1が"A"の場合D,E,F A1が"B"の場合D,G,H A1が"C"の場合E,I,J の選択させたいです。 隣接行列の表示 MATLAB初心者です。 隣接行列をグラフにしたいのですが、 gplotで描こうとするとgplot(A,B)のBの部分を 入れないといけません。 今1000*1000の隣接行列のデータはあるのです(Aはできている)がこれらを自動でうまく配置して表示するにはどうしたらよいのでしょうか? 隣接行列プログラム 隣接行列を使ったグラフ探索のプログラムを作りたいのですが。。 手も足もでません。どなたか助けていただけないでしょうか?? まずstate.txt 1 2 3 0 といったフォーマットに従った状態空間が記述された テキストファイルを読み込んで、隣接行列を動的に作成し、 さらにその状態空間をfwrite()を用いてバイナリ形式のファイルにする。 実行時のコマンドラインは次の書式に従う。 > ./MakeGraph テキストファイル(読み込み元) 状態空間(書き込み元) 状態数 [Enter] もうひとつは、上で作成した状態空間ファイル(バイナリ形式)をmalloc(),fread()を用いて メモリ上に復元し、経路探索を行う。 ただし、オプション指定で縦型探索と横型探索を切り替えられるようにすること。 実行時のコマンドラインは次の書式に従う。 > ./Search [-bd] 状態空間ファイル 状態数 開始状態 終了状態 [Enter] ちなみに、 使用例 > ./MakeGraph state.txt state.bin 4 [Enter] > ./Search -d state.bin 4 1 0 [Enter] > ./Search -b state.bin 4 3 3 [Enter] > ./Search -bd state.bin 4 2 0 [Enter] 結果例 1-0 : d : 0 <- 3 <- 1 3-3 : b : 3 <- 1 <- 0 <- 3 2-0 : b : Not Found... 2-0 : d : Not Found... これらを作るうえでのヒントのようなものもあるのですが、さっぱりで。。 状態空間をファイルから取り込むため、隣接行列で表現した状態空間のサイズは可変、 (たとえば、状態数5ならば、25個)である。したがって、メモリは動的に確保する必要がある。 また探索時に容易に扱えるようにするため、隣接行列は2次元配列であることが望ましい。 しかし、2次元の動的確保は難易度が高いので、1次元配列の動的確保を応用することで考える。 1次元配列を状態数2個確保し、2点の座標を指定することで、要求する要素へ アクセスできるマクロCoordinates(x, y, size)を用意する。 このマクロを利用すれば、1次元配列で確保したデータを2次元として扱うことができる。 ****************************************** MakeGraph.cとSearch.cは次にあります。 ここにはのせきれなかったので。。 お手数おかけします。 http://mugen.cc.osaka-kyoiku.ac.jp/pg/ あとstate.txt のフォーマットは次のようになっています。 これはデータ構造などででてくる有向グラフを隣接行列で示した場合、 スタート地点の状態0から状態1に(0→1) 状態1から状態2と、ゴールの状態3に(1→2、1→3) ゴールの状態3からスタート地点の状態0に(3→0) となっていた場合に、状態0~3までのリンク先をあらわしたものです。 単に、机上において、隣接行列で表現すると 0 1 2 3 0 0 1 0 0 1 0 0 1 1 2 0 0 0 0 3 1 0 0 0 となります。(線がはいっていないのでややこしいかもしれませんが。。) これと同じ意味で、 1 (状態0のリンク先で、1の直後に¥n) 2 3 (状態1のリンク先で、2と3の間に空白、さらに3の後ろに¥n) (状態2のリンク先はなにもないので、まっしろ) 0 (状態3のリンク先) となっています。こういう説明で伝わっているかわかりませんが、 よろしくおねがいします!! 数学の質問です。 数学の質問です。 3点A(→a),B(b→),C(c→)を頂点とする△ABCにおいて、辺ABの中点をD、辺BC,CAをそれぞれ2:1,3:1に内分する点をE,Fとする。AC→をa→、b→、c→を用いて表せ。 どうやりますか。教えてください。 リストと件数の自動更新 仕事でグラフを作成するときに関数を使って作成しようとした のですが躓いてなかなか進みません‥。どなたか助けてください。 担当 リスト 件数 作業者A 作業者A 2 作業者B 作業者B 3 作業者A → 作業者C 1 作業者C 作業者B 作業者B 担当者を入力するとリストと件数が更新される(担当者Dと入力するとリストについかされ横に1)ような感じでやりたいのですが IF文などでやるとどーしても上みたくならなくて困ってます。 ご回答の程宜しくお願いいたします。 エクセルのリストについて エクセルでファイルを作成しており、入力規則のリストで 苦慮してます。 例えば A B C D E F G 1 種類 リスト 野菜 大根 2 品名 リスト 果物 いちご 3 ほうれん草 4 リンゴ という表で、FとGはリストの各項目です。 例えば、B1にリストより野菜を選択した場合に、B2のリストに 大根とほうれん草のみが表示されるようにする事は可能でしょうか? リストが多い場合などで、絞り込み検索的な事が出来ればと思います。 ぜひ御教授お願い致します。 二次関数 こんにちは y=ax^2+bx+c をとくとグラフの頂点は (-b/2a. -D/4a)とならいました。 -b/2aにxがなることはわかりました。 yはどうやったら-D/4aがでるのでしょうか・ 教えてください宜しくお願いいたします。 表とリスト付き順序を両立させることはできますか? 順序付きリストがついた、表を作りたいと考えてます。 現在は、その方法の一つとしてブロック要素をcssで表化し順序付きリストを その表の列の左側に表示するというようにしたいと考えていました。 図で表すとこうなります。 A枠 B枠 ------------------------------- |1. (A1) | (B1) | ------------------------------- |2. (A2) | (B2) | ------------------------------- |3. (A3) | (B3) | ------------------------------- このようにリストno.100程度まで続く・・ 問題点は ブロック要素を使用すると、リスト付き順序が初期化されてしまうということです。 {(A2)の横には「2.」と着てほしいところが初期化されたため「1.」と表示される} どのようにすれば、表とリスト付き順序を共存させることができますか? もしくは他の方法で、表とリスト付き順序を共存させることができますか? エクセル2010 リストから選択する際の条件づけ エクセル2010です。 以下のようにリストを自動切り替えしたいのですが、数式や入力規則はどのようにしたら宜しいでしょうか? (1) 質問1で、選択肢が4つ(A・B・C・D)あり、その答えをセルに入力する。 (2) 質問2では、先ほどの入力した結果によって、次のセルに入力するためのリストを自動的に切り替える。 A~Cを選んだ場合、リストは a・b・c・d の4つから選ぶ。 Dを選んだ場合は、e・f・g・h の4つから選ぶ。 以上、宜しくお願いします。 エクセルのリスト作成について A B C D 1 と、シート1に表示させたい部分があるとします。 シート2で、別の表を作成して、 (1) B1をリストで選択すると、それに応じたリストがD1に自動的にでるように設定してあります (2)この後、 B1の選択によって、A1が自動的に表示させる設定をするにはどうしたらいいですか? 先の(1)の設定と同じように、名前をつけると、(1)の設定が消えてしまいできませんでした。 A1はリストではなく、Bの選択肢によって自動的に表示させるようにしたいのです。 B1が野菜ならA1は1 果物なら2という風に、リストから選ぶのではなく固定の表示です。 そのあと、D1の選択肢を選ぶと C1に自動的に表示がでるようにさせるにはどうしたらいいですか? これも(2)のように、固定の数字とします。 まとめると BからAが自動的に表示され、 BからDはリストで選択 そのDの選択によりCが自動的に表示させたいということです。 エクセル2010使用です リストボックス内の重複したものを削除 初心者です。 リストボックス内で A--- B--- C--- D--- E--- B--- F--- C--- という行数で表示しているものを onclickで重複しているBとCとの行数を消したいのですが どうすればいいのでしょうか? 消すものは6、8行目のBとCです。 実際は行がもっと多いので for文で上から見て消していくというようにしたいです。 困ってます。よろしくお願いします。 支配集合問題に対する近似アルゴリズム、についての問題です。 支配集合問題に対する近似アルゴリズム、についての問題です。 次の様な問題です。 「グラフ G=(V,E) に対し、支配集合を次のように定義する: 定義1 (支配集合). 頂点の部分集合 D⊆V は、Dに属さない全ての頂点に対して少なくとも1つのDに属する頂点が隣接するときに支配集合という。 与えられたグラフにおける大きさ最小の支配集合を見付ける問題を支配集合問題という。この問題に対する近似アルゴリズムを与え、そのアルゴリズムの近似率を求めよ。」 正直に言って、糸口さえ掴めず全く分かりません。 近似アルゴリズムに詳しい方、回答をよろしくお願いします。 リストファイルに一致する個数のカウントについて 以下にリストファイルと、インプットファイルがあります。 リストファイルのそれぞれにインプットファイルの中で何個一致するかを出力させたいです。 目的にかなうawkや perlなどのスクリプトを教えてほしいです。 list.txt a b c d ・・ input.txt 1 a b c 2 a d 3 4 b c ・・ output.txt a 2 b 2 c 2 d 1 ・・ 注目のQ&A 「前置詞」が入った曲といえば? 新幹線で駅弁食べますか? ポテチを毎日3袋ずつ食べています。 優しいモラハラの見抜き方ってあるのか モテる女性の特徴は? 口蓋裂と結婚 らくになりたい 喪女の恋愛、結婚 炭酸水の使い道は キリスト教やユダヤ教は、人殺しは地獄行きですか? カテゴリ 学問・教育 応用科学(農工医) 電気・電子工学情報工学建築・土木・環境工学農学医学・歯学・看護学・保健学薬学AI・機械学習その他(応用科学) カテゴリ一覧を見る あなたにピッタリな商品が見つかる! OKWAVE セレクト コスメ化粧品 化粧水・クレンジングなど 健康食品・サプリ コンブチャなど バス用品 入浴剤・アミノ酸シャンプーなど スマホアプリ マッチングアプリなど ヘアケア 白髪染めヘアカラーなど
補足
ご回答ありがとうございます。問題を見直してみたところ「無向」とは書かれておらず、「×隣接リスト→○隣接頂点リスト」でした。 ただ、これでも結局グラフとリストの関係性は曖昧ですよね...