1 / 13

エージェントを管理するボスの苦悩

エージェントを管理するボスの苦悩. 問題. n 人のエージェントを部下に持つボスがいる. エージェントは出張・帰還を頻繁に繰り返す. 手元に残っている部下の管理をどうする?. 手元に残っている部下を配列に保存. 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Gi. Je. Bu. Gu. Gu. Re. Za. Do. Gu. Za. Ki. Do. Za. Ki. Ve. Do. Ve. Na. Ki. Na. Ve. Ra. Na. Ra. Re. Ra.

Download Presentation

エージェントを管理するボスの苦悩

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. エージェントを管理するボスの苦悩 問題 n人のエージェントを部下に持つボスがいる. エージェントは出張・帰還を頻繁に繰り返す. 手元に残っている部下の管理をどうする? 手元に残っている部下を配列に保存 0 1 2 3 4 5 6 7 8 9 10 Gi Je Bu Gu Gu Re Za Do Gu Za Ki Do Za Ki Ve Do Ve Na Ki Na Ve Ra Na Ra Re Ra Re 出張 Bu 帰還 Za出張 Ve出張 Gi出張 Do 帰還 Bu 出張 Gu出張 Je 出張 Ki帰還 Na 出張 Ra 出張 Re 帰還 Gu帰還 Ki出張 Do 出張 Za帰還 Gi帰還

  2. 配列でエージェントを管理する利点・欠点 i番目のエージェントの発見 エージェントの発見 O(n) O(1) エージェントの削除 O(n) エージェントの挿入 O(n) 手元に残っている部下を配列に保存 0 1 2 3 4 5 6 7 8 9 10 Gi Je Gu Bu Za Re Gu Gu Do Za Za Ki Do Ve Do Ki Ki Ve Na Ve Na Ra Re Ra Na Ra

  3. リンクリスト(Linked List)でエージェントを管理 0 1 2 3 4 5 6 7 8 9 10 配列で管理 Gi Je Bu Gu Za Re Gu Gu Do Za Ki Do Za Ve Do Ki Na Ki Ve Ve Ra Na Na Ra Re Ra Linked Listで管理 スタート Re Za Bu Gu Gi Do Ve Je Re Re 出張 Ki Na Bu 出張 Ra Re 帰還

  4. Linked Listでエージェントを管理する利点・欠点 エージェントの削除 O(1) エージェントの発見 O(n) エージェントの挿入 O(1) i番目のエージェントの発見 O(n) Linked Listで管理 スタート Za Bu Gu Gi Do Ve Je Re Ki Na Ra

  5. 配列によるLinked Listの実装 配列による実装 スタート = 2 スタート = 0 再利用 = 3 再利用 = -1 再利用 = 2 再利用 = 3 0 1 2 3 4 5 6 7 8 9 10 name 配列 Gi Je Gu Re Bu Gu Re Za Do Za Gu Ki Do Za Ki Do Ve Ki Ve Na Na Ra Ve Ra Na Re Ra next 配列 1 2 4 3 3 0 Gu 4 -1 4 Za Gu Do 5 Za Ki Do 6 Ve Ki 7 Ve Na 8 Ra Na 9 10 Ra Re -1 再利用 スタート Za Re Bu Gu Gi Do Ve Je Re Re 出張 Ki -1 Na Bu 出張 Ra Linked Listのイメージ Re 帰還

  6. スパゲッティーソート ①スパゲッティをn本用意します. ②それぞれをxiの長さに切ります. ③テーブルの上にまとめて立てます. ④上から手を下ろし, 最初にさわったものを引き抜きます. ⑤それを繰り返します. ⑥最後に,逆に並べます. 手間:①O(n),②O(n),③O(1),     ④+⑤O(n),⑥O(n) Carpenter's algorithm(大工の方法)

  7. エージェントを管理するボスの苦悩 Gi 100000 漠然とした問題 n人のエージェントを部下に持つボスがいる. エージェントは出張・帰還を頻繁に繰り返す. 手元に残っている部下の管理をどうする? ただし,能力値の高いものを優先的に出張させたい. Re 70000 Je 60000 Bu 60000 Gu 30000 対策: データを配列に保存し並べ替えを利用 データ初期化(並べ替え)→ O(n log n) 出張命令(最適発見・削除) → O(1) 帰還(順番を保ちつつ挿入)→ O(n) Za 23000 Do 22000 もっとうまい手はないか? 並べ替えはやりすぎな気がする. その時点での最優先要素がわかればよい Ki 18000 Ve 18000 Na 5000 Ra 1500

  8. 優先キュー(Priority Queue)という道具 Gi 100000 対策: 高々n個のデータを配列に保存し並べ替えを利用 Re 70000 データ初期化(並べ替え)→ O(n log n) 出張命令(最適発見・削除) → O(1) 帰還(順番を保ちつつ挿入)→ O(n) Je 60000 Bu 60000 対策: 高々n個のデータを優先キューに保存 Gu 30000 データ構造初期化 → O(n log n)(→ O(n)) 出張命令(最適発見・削除) → O(log n) 帰還(優先キューの構造を保ちつつ挿入)→ O(log n) Za 23000 Do 22000 Ki 18000 Ve 18000 Na 5000 Ra 1500

  9. ヒープ(Heap)による優先キューの実現: 定義 定義【(バイナリ)ヒープ】 Ra Gi ・根付き木 ・各頂点が要素に対応 ・各頂点にはキー値が付属 ・各頂点には高々2個の子要素 ・親の優先順位は子以上 15 1000 Bu 600 Gu Je 300 600 →根の優先順位が最高となる Na Re Za 50 700 230 根付き木が深くならないように 気をつける →上左からつめて入れる Ve Ki Do 180 180 最大要素数nのとき 木の深さは高々log2n → O(log n) 220

  10. ヒープによる優先キューの実現: 取り出し操作pop pop() Ra Gi 根にある要素を取り出す. ヒープの再下右要素を根に移動する. ShiftDown(根の要素)により木を整形する. 15 1000 Bu popの計算量はO(log n)である. 600 Gu Je 300 600 Na Re Za 50 700 230 Ve Ki ShiftDown(x) Do 180 180 if xの優先度 > xの子の優先度: 優先度の高い子とxの位置を入れ替える ShiftDown(x) 220

  11. ヒープによる優先キューの実現: 要素の追加push push(x) Ra Gi 新しい要素xをヒープの最下右に追加する. ShiftUp(x)によりヒープを整形する. 15 1000 Bu pushの計算量はO(log n)である. 600 Gu Je 300 600 ShiftUp(x) Na Re Za if xの優先度 > xの親の優先度: xの親とxの位置を入れ替える. ShiftUp(x) 50 700 230 Ve Ki 要素数がn個のヒープの構築は ヒープが空の状態から 要素を1つ1つpushすればよいので O(n log n)で完了する. Do 180 180 220

  12. バケット法(Bucket method)の一例 Gi 123383 <- 120000 バケツ0番~バケツN番を用意 (Nは十分大きい数) キー値がiの要素をバケツi番に入れる Je 56264 <- 100000 Bu 52384 バケツ 52383 <- 70000 Re 59794 バケツ 52385 Za 23358 <- 50000 バケツ 52384 Do 22265 <- 30000 Ki 18159 バケツ 52383 Ve 18159 <- 20000 Na 5310 <- 10000 バケツ 52383 <- 0

  13. ハッシュ法(Hashing)の一例 Gi 123383 (1+2+3+3+8+3) mod 9 = 2 8 Je 56264 (5+6+2+6+4) mod 9 = 5 7 Bu 52384 (5+2+3+8+4) mod 9 = 4 6 5 (5+9+7+9+4) mod 9 = 7 4 Re 59794 (2+3+3+5+8) mod 9 = 3 3 Za 23358 (2+2+2+6+5) mod 9 = 8 2 Do 22265 (1+8+1+5+9) mod 9 = 6 1 Ki 18159 (1+8+1+5+9) mod 9 = 6 0 Ve 18159 (5+3+1+0) mod 9 = 0 ハッシュテーブル (Hash table) Na 5310 各桁の数字を足して9で割った余りを計算 ハッシュ関数(Hash function)

More Related