<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://orsj-ml.org/orwiki/wiki/index.php?action=history&amp;feed=atom&amp;title=%E3%80%8A%E3%83%90%E3%82%B1%E3%83%83%E3%83%88%E6%B3%95%E3%80%8B</id>
	<title>《バケット法》 - 版の履歴</title>
	<link rel="self" type="application/atom+xml" href="https://orsj-ml.org/orwiki/wiki/index.php?action=history&amp;feed=atom&amp;title=%E3%80%8A%E3%83%90%E3%82%B1%E3%83%83%E3%83%88%E6%B3%95%E3%80%8B"/>
	<link rel="alternate" type="text/html" href="https://orsj-ml.org/orwiki/wiki/index.php?title=%E3%80%8A%E3%83%90%E3%82%B1%E3%83%83%E3%83%88%E6%B3%95%E3%80%8B&amp;action=history"/>
	<updated>2026-04-19T19:05:41Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.35.3</generator>
	<entry>
		<id>https://orsj-ml.org/orwiki/wiki/index.php?title=%E3%80%8A%E3%83%90%E3%82%B1%E3%83%83%E3%83%88%E6%B3%95%E3%80%8B&amp;diff=7803&amp;oldid=prev</id>
		<title>2007年8月6日 (月) 17:14にKuwashimaによる</title>
		<link rel="alternate" type="text/html" href="https://orsj-ml.org/orwiki/wiki/index.php?title=%E3%80%8A%E3%83%90%E3%82%B1%E3%83%83%E3%83%88%E6%B3%95%E3%80%8B&amp;diff=7803&amp;oldid=prev"/>
		<updated>2007-08-06T17:14:44Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ja&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← 古い版&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2007年8月6日 (月) 17:14時点における版&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l24&quot; &gt;24行目:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;24行目:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[3] 伊理正夫監修, 腰塚武志編集, 『計算幾何学と地理情報処理(第２版)』, 共立出版, 1993.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[3] 伊理正夫監修, 腰塚武志編集, 『計算幾何学と地理情報処理(第２版)』, 共立出版, 1993.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category:計算幾何|ばけっとほう]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Kuwashima</name></author>
	</entry>
	<entry>
		<id>https://orsj-ml.org/orwiki/wiki/index.php?title=%E3%80%8A%E3%83%90%E3%82%B1%E3%83%83%E3%83%88%E6%B3%95%E3%80%8B&amp;diff=5807&amp;oldid=prev</id>
		<title>Orsjwiki: &quot;《バケット法》&quot; を保護しました。 [edit=sysop:move=sysop]</title>
		<link rel="alternate" type="text/html" href="https://orsj-ml.org/orwiki/wiki/index.php?title=%E3%80%8A%E3%83%90%E3%82%B1%E3%83%83%E3%83%88%E6%B3%95%E3%80%8B&amp;diff=5807&amp;oldid=prev"/>
		<updated>2007-07-19T13:20:24Z</updated>

		<summary type="html">&lt;p&gt;&amp;quot;《バケット法》&amp;quot; を保護しました。 [edit=sysop:move=sysop]&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ja&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← 古い版&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2007年7月19日 (木) 13:20時点における版&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;ja&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(相違点なし)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Orsjwiki</name></author>
	</entry>
	<entry>
		<id>https://orsj-ml.org/orwiki/wiki/index.php?title=%E3%80%8A%E3%83%90%E3%82%B1%E3%83%83%E3%83%88%E6%B3%95%E3%80%8B&amp;diff=1879&amp;oldid=prev</id>
		<title>2007年7月6日 (金) 13:21に122.26.167.76による</title>
		<link rel="alternate" type="text/html" href="https://orsj-ml.org/orwiki/wiki/index.php?title=%E3%80%8A%E3%83%90%E3%82%B1%E3%83%83%E3%83%88%E6%B3%95%E3%80%8B&amp;diff=1879&amp;oldid=prev"/>
		<updated>2007-07-06T13:21:21Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ja&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← 古い版&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2007年7月6日 (金) 13:21時点における版&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;1行目:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;1行目:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;【ばけっとほう (bucket method) 】&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;'''&lt;/ins&gt;【ばけっとほう (bucket method) 】&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;'''&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　計算幾何の実用的なアルゴリズムの代表的設計法の一つであり, 平面最小重み完全[[マッチング]] (matching), [[点位置決定]] (point location) などが[[バケット法]] (bucket method) に基づいて効率的に解かれている. 簡単のため2次元で説明するが, 高次元にも容易に一般化できる. 平面上にサイズ&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;の解きたい問題が与えられたとする. 問題を含む領域を軸に平行な辺からなる長方形で覆い, 軸に垂直な直線を引いて&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;&amp;lt;math&amp;gt;\Theta(n)&amp;lt;/math&amp;gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;個のバケットと呼ばれる合同な小長方形に分割する. そして全体の問題をそれぞれのバケット内の問題として分割して記憶する. すると通常はバケット内での問題だけで全体の解が得られるので高速になる. バケット間にまたがる情報を必要に応じて利用しなければならない場合もあるがこの場合も高速な手法があることが多い.  &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　計算幾何の実用的なアルゴリズムの代表的設計法の一つであり, 平面最小重み完全[[マッチング]] (matching), [[点位置決定]] (point location) などが[[バケット法]] (bucket method) に基づいて効率的に解かれている. 簡単のため2次元で説明するが, 高次元にも容易に一般化できる. 平面上にサイズ&amp;lt;math&amp;gt;n&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &lt;/ins&gt;&amp;lt;/math&amp;gt;の解きたい問題が与えられたとする. 問題を含む領域を軸に平行な辺からなる長方形で覆い, 軸に垂直な直線を引いて&amp;lt;math&amp;gt;\Theta(n)&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &lt;/ins&gt;&amp;lt;/math&amp;gt;個のバケットと呼ばれる合同な小長方形に分割する. そして全体の問題をそれぞれのバケット内の問題として分割して記憶する. すると通常はバケット内での問題だけで全体の解が得られるので高速になる. バケット間にまたがる情報を必要に応じて利用しなければならない場合もあるがこの場合も高速な手法があることが多い.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　具体例でより詳しく説明する. 与えられた平面上の&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;&amp;lt;math&amp;gt;n=2m&amp;lt;/math&amp;gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;個の点集合に対して, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;&amp;lt;math&amp;gt;2&amp;lt;/math&amp;gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;点ずつペアにして&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;個のペアの集合&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;&amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;をつくるという問題を考える. このような&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;&amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;は, 完全マッチングと呼ばれている. その際, ペアの重みをそのペアに含まれる&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;&amp;lt;math&amp;gt;2&amp;lt;/math&amp;gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;点間の距離(&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;&amp;lt;math&amp;gt;2&amp;lt;/math&amp;gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;点を結ぶ線分の長さ)とする. 完全マッチング&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;&amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;の重みを&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;&amp;lt;math&amp;gt;M&amp;lt;/math&amp;gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;に含まれる&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;個のペアの重みの総和と見なし, 重みを最小にする完全マッチングを求める問題を平面最小重み完全マッチングというが, この問題をバケット法に基づいて解決しその実用性を実証した研究 [2] が, 計算幾何学の問題に対するバケット法の最初の適用例といわれている. できるだけ小さい重みの完全マッチングをつくるわけであるので, 遠く離れた&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;&amp;lt;math&amp;gt;2&amp;lt;/math&amp;gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;点がペアになる可能性は低い. そこで, 対象領域(長方形領域)を縦横&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;&amp;lt;math&amp;gt;\lceil \sqrt{n}\ \rceil&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;&amp;lt;/math&amp;gt;等分し全部で&amp;lt;math&amp;gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;\lceil \sqrt{n} \ \rceil \times \lceil \sqrt{n} \ \rceil=\Theta(n)&amp;lt;/math&amp;gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;個のバケットに分割して, 同一のバケットに含まれる点でまずペアをつくる. 最小重みの完全マッチングには距離の小さい&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;&amp;lt;math&amp;gt;2&amp;lt;/math&amp;gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;点がペアとして含まれることが多いので, 同一のバケットに含まれるもの同士をペアにするということは, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;同一のバケットに含まれる$2$点は極めて近い点である可能性が高く&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;異なるバケットに属する$2$点は遠くにある可能性が高いという&lt;/del&gt;, 自然な仮定に基づいている.  &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　具体例でより詳しく説明する. 与えられた平面上の&amp;lt;math&amp;gt;n=2m&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &lt;/ins&gt;&amp;lt;/math&amp;gt;個の点集合に対して, &amp;lt;math&amp;gt;2&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &lt;/ins&gt;&amp;lt;/math&amp;gt;点ずつペアにして&amp;lt;math&amp;gt;m&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, \, &lt;/ins&gt;&amp;lt;/math&amp;gt;個のペアの集合&amp;lt;math&amp;gt;M&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &lt;/ins&gt;&amp;lt;/math&amp;gt;をつくるという問題を考える. このような&amp;lt;math&amp;gt;M&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &lt;/ins&gt;&amp;lt;/math&amp;gt;は, 完全マッチングと呼ばれている. その際, ペアの重みをそのペアに含まれる&amp;lt;math&amp;gt;2&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &lt;/ins&gt;&amp;lt;/math&amp;gt;点間の距離(&amp;lt;math&amp;gt;2&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &lt;/ins&gt;&amp;lt;/math&amp;gt;点を結ぶ線分の長さ)とする. 完全マッチング&amp;lt;math&amp;gt;M&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &lt;/ins&gt;&amp;lt;/math&amp;gt;の重みを&amp;lt;math&amp;gt;M&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &lt;/ins&gt;&amp;lt;/math&amp;gt;に含まれる&amp;lt;math&amp;gt;m&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &lt;/ins&gt;&amp;lt;/math&amp;gt;個のペアの重みの総和と見なし, 重みを最小にする完全マッチングを求める問題を平面最小重み完全マッチングというが, この問題をバケット法に基づいて解決しその実用性を実証した研究 [2] が, 計算幾何学の問題に対するバケット法の最初の適用例といわれている. できるだけ小さい重みの完全マッチングをつくるわけであるので, 遠く離れた&amp;lt;math&amp;gt;2&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &lt;/ins&gt;&amp;lt;/math&amp;gt;点がペアになる可能性は低い. そこで, 対象領域(長方形領域)を縦横&amp;lt;math&amp;gt;\lceil \sqrt{n}\ \rceil&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &lt;/ins&gt;&amp;lt;/math&amp;gt;等分し全部で&amp;lt;math&amp;gt;\lceil \sqrt{n} \ \rceil \times \lceil \sqrt{n} \ \rceil=\Theta(n)&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &lt;/ins&gt;&amp;lt;/math&amp;gt;個のバケットに分割して, 同一のバケットに含まれる点でまずペアをつくる. 最小重みの完全マッチングには距離の小さい&amp;lt;math&amp;gt;2&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &lt;/ins&gt;&amp;lt;/math&amp;gt;点がペアとして含まれることが多いので, 同一のバケットに含まれるもの同士をペアにするということは, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;同一のバケットに含まれる2点は極めて近い点である可能性が高く&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;異なるバケットに属する2点は遠くにある可能性が高いという&lt;/ins&gt;, 自然な仮定に基づいている.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　このように, バケット法では問題を局所領域に限定できるという特徴がある. さらに, 与えられる点の集合が対象領域において一様に分布するときは, &amp;lt;math&amp;gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;n=2m&amp;lt;/math&amp;gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;個の点に対してほぼ同数個のバケットに分割しているので, 各バケットは平均的に一定数(&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;&amp;lt;math&amp;gt;\mbox{O}(1)&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;&amp;lt;/math&amp;gt;)個の点しか含まないといえる. したがって, 各バケット内での最小重み完全マッチングは&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;&amp;lt;math&amp;gt;\mbox{O}(1)&amp;lt;/math&amp;gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;の手間で見つけることができる. このように, バケット法では, バケット内の問題が極めて単純であるという特徴も併せもっている. さらに, バケットは合同な長方形であるため, バケットに含まれる点も簡単に求められるという特徴もある. このような特徴から, バケット法に基づく手法は, 一般に極めて高速となる [1].  &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　このように, バケット法では問題を局所領域に限定できるという特徴がある. さらに, 与えられる点の集合が対象領域において一様に分布するときは, &amp;lt;math&amp;gt;n=2m&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &lt;/ins&gt;&amp;lt;/math&amp;gt;個の点に対してほぼ同数個のバケットに分割しているので, 各バケットは平均的に一定数(&amp;lt;math&amp;gt;\mbox{O}(1)&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &lt;/ins&gt;&amp;lt;/math&amp;gt;)個の点しか含まないといえる. したがって, 各バケット内での最小重み完全マッチングは&amp;lt;math&amp;gt;\mbox{O}(1)&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &lt;/ins&gt;&amp;lt;/math&amp;gt;の手間で見つけることができる. このように, バケット法では, バケット内の問題が極めて単純であるという特徴も併せもっている. さらに, バケットは合同な長方形であるため, バケットに含まれる点も簡単に求められるという特徴もある. このような特徴から, バケット法に基づく手法は, 一般に極めて高速となる [1].  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　上の平面最小重み完全マッチングの問題では, バケット内での完全マッチングだけでは, 全体の完全マッチングとはならずに, ペアにされていない点が残るのが普通で, 最終的には, バケット間にまたがる点同士でさらにペアをつくっていかなければならないが, これは, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;&amp;lt;math&amp;gt;2&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;&amp;lt;/math&amp;gt;次元バケット間の距離を, ある程度忠実に保存するようにして, 一列に並べ, その順番で次々とペアにしていけばよい. このようにして求められた完全マッチングは, 最小重みの完全マッチングでないことが多いが, 詳細な解析により, かなり精度の高い解となることが保証されている [2]. 最適解はネットワークのアルゴリズムを用いて&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;&amp;lt;math&amp;gt;\mbox{O}(n^3)&amp;lt;/math&amp;gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;の手間で解けるが, 上記のバケット法に基づく方法は&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;&amp;lt;math&amp;gt;\mbox{O}(n)&amp;lt;/math&amp;gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;の手間であり, 実際の応用では極めて有効である.  &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　上の平面最小重み完全マッチングの問題では, バケット内での完全マッチングだけでは, 全体の完全マッチングとはならずに, ペアにされていない点が残るのが普通で, 最終的には, バケット間にまたがる点同士でさらにペアをつくっていかなければならないが, これは, &amp;lt;math&amp;gt;2&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &lt;/ins&gt;&amp;lt;/math&amp;gt;次元バケット間の距離を, ある程度忠実に保存するようにして, 一列に並べ, その順番で次々とペアにしていけばよい. このようにして求められた完全マッチングは, 最小重みの完全マッチングでないことが多いが, 詳細な解析により, かなり精度の高い解となることが保証されている [2]. 最適解はネットワークのアルゴリズムを用いて&amp;lt;math&amp;gt;\mbox{O}(n^3)&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &lt;/ins&gt;&amp;lt;/math&amp;gt;の手間で解けるが, 上記のバケット法に基づく方法は&amp;lt;math&amp;gt;\mbox{O}(n)&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &lt;/ins&gt;&amp;lt;/math&amp;gt;の手間であり, 実際の応用では極めて有効である.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　平面最小重み完全マッチングをプロッターでペンを用いて地図を描く際の筆順最適化 (optimal drawing (of map) ) に応用する. 地図をきれいに描くため, 同じ線を&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;&amp;lt;math&amp;gt;2&amp;lt;/math&amp;gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;度描くことはしないものとする. ペンをおろして線を描いているときもあるし, ペンを上げて次に描くべき線の始まりまで移動しているときもある. 地図を描くという観点からすると, ペンをおろして線を描くという動作は必要不可欠なものである. これに対して, ペンを上げて次に描くべき線の始まりまで移動する動作は, 空送りと呼ばれ無駄な動作であるので, できるだけ少なくするのがよい. さて, 地図が一筆書き可能なら空送りをすることなく描けることになる. 地図が一筆書き不可能ならば空送りの部分に対応する線を付け加えた図で一筆書きできるように変形して描くことになる. プロッターでの描画に要する時間は, ほぼ, この&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;&amp;lt;math&amp;gt;2&amp;lt;/math&amp;gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;つの動作に要する時間の総和になるので, 描画時間を減らすには, 空送り全体に要する時間を減らせばよい. これらの動作に要する時間は移動量に比例するものとすれば, 空送り全体の移動量(移動距離)を最小にすれば, 描画に要する時間は最小ということになる. これは平面最小重み完全マッチングに帰着できる. 地図が一筆書き不可能ならば奇数本の線が接続する点を全部拾ってきて(すると点は偶数個になる), &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;&amp;lt;math&amp;gt;2&amp;lt;/math&amp;gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;$&lt;/del&gt;個ずつペアにして完全マッチングを求め, 完全マッチングに含まれる線を空送りに対応させて付け加えれば一筆書きできることになる. 完全マッチングの選び方により付け加えた線の総長は異なるので, 総長最小の完全マッチングを求める問題となる.  &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　平面最小重み完全マッチングをプロッターでペンを用いて地図を描く際の筆順最適化 (optimal drawing (of map) ) に応用する. 地図をきれいに描くため, 同じ線を&amp;lt;math&amp;gt;2&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &lt;/ins&gt;&amp;lt;/math&amp;gt;度描くことはしないものとする. ペンをおろして線を描いているときもあるし, ペンを上げて次に描くべき線の始まりまで移動しているときもある. 地図を描くという観点からすると, ペンをおろして線を描くという動作は必要不可欠なものである. これに対して, ペンを上げて次に描くべき線の始まりまで移動する動作は, 空送りと呼ばれ無駄な動作であるので, できるだけ少なくするのがよい. さて, 地図が一筆書き可能なら空送りをすることなく描けることになる. 地図が一筆書き不可能ならば空送りの部分に対応する線を付け加えた図で一筆書きできるように変形して描くことになる. プロッターでの描画に要する時間は, ほぼ, この&amp;lt;math&amp;gt;2&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &lt;/ins&gt;&amp;lt;/math&amp;gt;つの動作に要する時間の総和になるので, 描画時間を減らすには, 空送り全体に要する時間を減らせばよい. これらの動作に要する時間は移動量に比例するものとすれば, 空送り全体の移動量(移動距離)を最小にすれば, 描画に要する時間は最小ということになる. これは平面最小重み完全マッチングに帰着できる. 地図が一筆書き不可能ならば奇数本の線が接続する点を全部拾ってきて(すると点は偶数個になる), &amp;lt;math&amp;gt;2&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;\, &lt;/ins&gt;&amp;lt;/math&amp;gt;個ずつペアにして完全マッチングを求め, 完全マッチングに含まれる線を空送りに対応させて付け加えれば一筆書きできることになる. 完全マッチングの選び方により付け加えた線の総長は異なるので, 総長最小の完全マッチングを求める問題となる.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　その他の計算幾何の様々な探索問題に対するバケット法の応用については文献 [1, 3] を参照のこと.  &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　その他の計算幾何の様々な探索問題に対するバケット法の応用については文献 [1, 3] を参照のこと.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key orsjml2021_wiki:diff::1.12:old-1875:rev-1879 --&gt;
&lt;/table&gt;</summary>
		<author><name>122.26.167.76</name></author>
	</entry>
	<entry>
		<id>https://orsj-ml.org/orwiki/wiki/index.php?title=%E3%80%8A%E3%83%90%E3%82%B1%E3%83%83%E3%83%88%E6%B3%95%E3%80%8B&amp;diff=1875&amp;oldid=prev</id>
		<title>2007年7月6日 (金) 13:06に122.26.167.76による</title>
		<link rel="alternate" type="text/html" href="https://orsj-ml.org/orwiki/wiki/index.php?title=%E3%80%8A%E3%83%90%E3%82%B1%E3%83%83%E3%83%88%E6%B3%95%E3%80%8B&amp;diff=1875&amp;oldid=prev"/>
		<updated>2007-07-06T13:06:54Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ja&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← 古い版&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2007年7月6日 (金) 13:06時点における版&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;1行目:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;1行目:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;【ばけっとほう (bucket method) 】&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;【ばけっとほう (bucket method) 】&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　計算幾何の実用的なアルゴリズムの代表的設計法の一つであり, 平面最小重み完全[[マッチング]] (matching), [[点位置決定]] (point location) などが[[バケット法]] (bucket method) に基づいて効率的に解かれている. 簡単のため2次元で説明するが, 高次元にも容易に一般化できる. 平面上にサイズ$n$の解きたい問題が与えられたとする. 問題を含む領域を軸に平行な辺からなる長方形で覆い, 軸に垂直な直線を引いて$\Theta(n)$個のバケットと呼ばれる合同な小長方形に分割する. そして全体の問題をそれぞれのバケット内の問題として分割して記憶する. すると通常はバケット内での問題だけで全体の解が得られるので高速になる. バケット間にまたがる情報を必要に応じて利用しなければならない場合もあるがこの場合も高速な手法があることが多い.  &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　計算幾何の実用的なアルゴリズムの代表的設計法の一つであり, 平面最小重み完全[[マッチング]] (matching), [[点位置決定]] (point location) などが[[バケット法]] (bucket method) に基づいて効率的に解かれている. 簡単のため2次元で説明するが, 高次元にも容易に一般化できる. 平面上にサイズ$&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;n&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/math&amp;gt;&lt;/ins&gt;$の解きたい問題が与えられたとする. 問題を含む領域を軸に平行な辺からなる長方形で覆い, 軸に垂直な直線を引いて$&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;\Theta(n)&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/math&amp;gt;&lt;/ins&gt;$個のバケットと呼ばれる合同な小長方形に分割する. そして全体の問題をそれぞれのバケット内の問題として分割して記憶する. すると通常はバケット内での問題だけで全体の解が得られるので高速になる. バケット間にまたがる情報を必要に応じて利用しなければならない場合もあるがこの場合も高速な手法があることが多い.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　具体例でより詳しく説明する. 与えられた平面上の$n=2m$個の点集合に対して, $2$点ずつペアにして$m$個のペアの集合$M$をつくるという問題を考える. このような$M$は, 完全マッチングと呼ばれている. その際, ペアの重みをそのペアに含まれる$2$点間の距離($2$点を結ぶ線分の長さ)とする. 完全マッチング$M$の重みを$M$に含まれる$m$個のペアの重みの総和と見なし, 重みを最小にする完全マッチングを求める問題を平面最小重み完全マッチングというが, この問題をバケット法に基づいて解決しその実用性を実証した研究 [2] が, 計算幾何学の問題に対するバケット法の最初の適用例といわれている. できるだけ小さい重みの完全マッチングをつくるわけであるので, 遠く離れた$2$点がペアになる可能性は低い. そこで, 対象領域(長方形領域)を縦横$\lceil \sqrt{n}\ \rceil$等分し全部で$\lceil \sqrt{n} \ \rceil \times \lceil \sqrt{n} \ \rceil=\Theta(n)$個のバケットに分割して, 同一のバケットに含まれる点でまずペアをつくる. 最小重みの完全マッチングには距離の小さい$2$点がペアとして含まれることが多いので, 同一のバケットに含まれるもの同士をペアにするということは, 同一のバケットに含まれる$2$点は極めて近い点である可能性が高く, 異なるバケットに属する$2$点は遠くにある可能性が高いという, 自然な仮定に基づいている.  &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　具体例でより詳しく説明する. 与えられた平面上の$&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;n=2m&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/math&amp;gt;&lt;/ins&gt;$個の点集合に対して, $&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;2&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/math&amp;gt;&lt;/ins&gt;$点ずつペアにして$&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;m&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/math&amp;gt;&lt;/ins&gt;$個のペアの集合$&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;M&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/math&amp;gt;&lt;/ins&gt;$をつくるという問題を考える. このような$&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;M&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/math&amp;gt;&lt;/ins&gt;$は, 完全マッチングと呼ばれている. その際, ペアの重みをそのペアに含まれる$&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;2&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/math&amp;gt;&lt;/ins&gt;$点間の距離($&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;2&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/math&amp;gt;&lt;/ins&gt;$点を結ぶ線分の長さ)とする. 完全マッチング$&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;M&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/math&amp;gt;&lt;/ins&gt;$の重みを$&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;M&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/math&amp;gt;&lt;/ins&gt;$に含まれる$&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;m&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/math&amp;gt;&lt;/ins&gt;$個のペアの重みの総和と見なし, 重みを最小にする完全マッチングを求める問題を平面最小重み完全マッチングというが, この問題をバケット法に基づいて解決しその実用性を実証した研究 [2] が, 計算幾何学の問題に対するバケット法の最初の適用例といわれている. できるだけ小さい重みの完全マッチングをつくるわけであるので, 遠く離れた$&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;2&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/math&amp;gt;&lt;/ins&gt;$点がペアになる可能性は低い. そこで, 対象領域(長方形領域)を縦横$&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;\lceil \sqrt{n}\ \rceil$&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/math&amp;gt;&lt;/ins&gt;等分し全部で&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;$\lceil \sqrt{n} \ \rceil \times \lceil \sqrt{n} \ \rceil=\Theta(n)&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/math&amp;gt;&lt;/ins&gt;$個のバケットに分割して, 同一のバケットに含まれる点でまずペアをつくる. 最小重みの完全マッチングには距離の小さい$&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;2&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/math&amp;gt;&lt;/ins&gt;$点がペアとして含まれることが多いので, 同一のバケットに含まれるもの同士をペアにするということは, 同一のバケットに含まれる$2$点は極めて近い点である可能性が高く, 異なるバケットに属する$2$点は遠くにある可能性が高いという, 自然な仮定に基づいている.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　このように, バケット法では問題を局所領域に限定できるという特徴がある. さらに, 与えられる点の集合が対象領域において一様に分布するときは, $n=2m$個の点に対してほぼ同数個のバケットに分割しているので, 各バケットは平均的に一定数($\mbox{O}(1)$)個の点しか含まないといえる. したがって, 各バケット内での最小重み完全マッチングは$\mbox{O}(1)$の手間で見つけることができる. このように, バケット法では, バケット内の問題が極めて単純であるという特徴も併せもっている. さらに, バケットは合同な長方形であるため, バケットに含まれる点も簡単に求められるという特徴もある. このような特徴から, バケット法に基づく手法は, 一般に極めて高速となる [1].  &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　このように, バケット法では問題を局所領域に限定できるという特徴がある. さらに, 与えられる点の集合が対象領域において一様に分布するときは, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;$n=2m&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/math&amp;gt;&lt;/ins&gt;$個の点に対してほぼ同数個のバケットに分割しているので, 各バケットは平均的に一定数($&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;\mbox{O}(1)$&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/math&amp;gt;&lt;/ins&gt;)個の点しか含まないといえる. したがって, 各バケット内での最小重み完全マッチングは$&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;\mbox{O}(1)&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/math&amp;gt;&lt;/ins&gt;$の手間で見つけることができる. このように, バケット法では, バケット内の問題が極めて単純であるという特徴も併せもっている. さらに, バケットは合同な長方形であるため, バケットに含まれる点も簡単に求められるという特徴もある. このような特徴から, バケット法に基づく手法は, 一般に極めて高速となる [1].  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　上の平面最小重み完全マッチングの問題では, バケット内での完全マッチングだけでは, 全体の完全マッチングとはならずに, ペアにされていない点が残るのが普通で, 最終的には, バケット間にまたがる点同士でさらにペアをつくっていかなければならないが, これは, $2$次元バケット間の距離を, ある程度忠実に保存するようにして, 一列に並べ, その順番で次々とペアにしていけばよい. このようにして求められた完全マッチングは, 最小重みの完全マッチングでないことが多いが, 詳細な解析により, かなり精度の高い解となることが保証されている [2]. 最適解はネットワークのアルゴリズムを用いて$\mbox{O}(n^3)$の手間で解けるが, 上記のバケット法に基づく方法は$\mbox{O}(n)$の手間であり, 実際の応用では極めて有効である.  &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　上の平面最小重み完全マッチングの問題では, バケット内での完全マッチングだけでは, 全体の完全マッチングとはならずに, ペアにされていない点が残るのが普通で, 最終的には, バケット間にまたがる点同士でさらにペアをつくっていかなければならないが, これは, $&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;2$&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/math&amp;gt;&lt;/ins&gt;次元バケット間の距離を, ある程度忠実に保存するようにして, 一列に並べ, その順番で次々とペアにしていけばよい. このようにして求められた完全マッチングは, 最小重みの完全マッチングでないことが多いが, 詳細な解析により, かなり精度の高い解となることが保証されている [2]. 最適解はネットワークのアルゴリズムを用いて$&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;\mbox{O}(n^3)&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/math&amp;gt;&lt;/ins&gt;$の手間で解けるが, 上記のバケット法に基づく方法は$&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;\mbox{O}(n)&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/math&amp;gt;&lt;/ins&gt;$の手間であり, 実際の応用では極めて有効である.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　平面最小重み完全マッチングをプロッターでペンを用いて地図を描く際の筆順最適化 (optimal drawing (of map) ) に応用する. 地図をきれいに描くため, 同じ線を$2$度描くことはしないものとする. ペンをおろして線を描いているときもあるし, ペンを上げて次に描くべき線の始まりまで移動しているときもある. 地図を描くという観点からすると, ペンをおろして線を描くという動作は必要不可欠なものである. これに対して, ペンを上げて次に描くべき線の始まりまで移動する動作は, 空送りと呼ばれ無駄な動作であるので, できるだけ少なくするのがよい. さて, 地図が一筆書き可能なら空送りをすることなく描けることになる. 地図が一筆書き不可能ならば空送りの部分に対応する線を付け加えた図で一筆書きできるように変形して描くことになる. プロッターでの描画に要する時間は, ほぼ, この$2$つの動作に要する時間の総和になるので, 描画時間を減らすには, 空送り全体に要する時間を減らせばよい. これらの動作に要する時間は移動量に比例するものとすれば, 空送り全体の移動量(移動距離)を最小にすれば, 描画に要する時間は最小ということになる. これは平面最小重み完全マッチングに帰着できる. 地図が一筆書き不可能ならば奇数本の線が接続する点を全部拾ってきて(すると点は偶数個になる), $2$個ずつペアにして完全マッチングを求め, 完全マッチングに含まれる線を空送りに対応させて付け加えれば一筆書きできることになる. 完全マッチングの選び方により付け加えた線の総長は異なるので, 総長最小の完全マッチングを求める問題となる.  &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　平面最小重み完全マッチングをプロッターでペンを用いて地図を描く際の筆順最適化 (optimal drawing (of map) ) に応用する. 地図をきれいに描くため, 同じ線を$&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;2&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/math&amp;gt;&lt;/ins&gt;$度描くことはしないものとする. ペンをおろして線を描いているときもあるし, ペンを上げて次に描くべき線の始まりまで移動しているときもある. 地図を描くという観点からすると, ペンをおろして線を描くという動作は必要不可欠なものである. これに対して, ペンを上げて次に描くべき線の始まりまで移動する動作は, 空送りと呼ばれ無駄な動作であるので, できるだけ少なくするのがよい. さて, 地図が一筆書き可能なら空送りをすることなく描けることになる. 地図が一筆書き不可能ならば空送りの部分に対応する線を付け加えた図で一筆書きできるように変形して描くことになる. プロッターでの描画に要する時間は, ほぼ, この$&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;2&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/math&amp;gt;&lt;/ins&gt;$つの動作に要する時間の総和になるので, 描画時間を減らすには, 空送り全体に要する時間を減らせばよい. これらの動作に要する時間は移動量に比例するものとすれば, 空送り全体の移動量(移動距離)を最小にすれば, 描画に要する時間は最小ということになる. これは平面最小重み完全マッチングに帰着できる. 地図が一筆書き不可能ならば奇数本の線が接続する点を全部拾ってきて(すると点は偶数個になる), $&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;math&amp;gt;&lt;/ins&gt;2&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;/math&amp;gt;&lt;/ins&gt;$個ずつペアにして完全マッチングを求め, 完全マッチングに含まれる線を空送りに対応させて付け加えれば一筆書きできることになる. 完全マッチングの選び方により付け加えた線の総長は異なるので, 総長最小の完全マッチングを求める問題となる.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　その他の計算幾何の様々な探索問題に対するバケット法の応用については文献 [1, 3] を参照のこと.  &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;　その他の計算幾何の様々な探索問題に対するバケット法の応用については文献 [1, 3] を参照のこと.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l15&quot; &gt;15行目:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;15行目:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;参考文献&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;----&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;'''&lt;/ins&gt;参考文献&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;'''&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[1] T. Asano, M. Edahiro, H. Imai, M. Iri and K. Murota, &amp;quot;Practical Use of Bucketing Techniques in Computational Geometry,&amp;quot; in ''Computational Geometry'', G.T. Toussaint, ed., North-Holland, 1985.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[1] T. Asano, M. Edahiro, H. Imai, M. Iri and K. Murota, &amp;quot;Practical Use of Bucketing Techniques in Computational Geometry,&amp;quot; in ''Computational Geometry'', G.T. Toussaint, ed., North-Holland, 1985.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>122.26.167.76</name></author>
	</entry>
	<entry>
		<id>https://orsj-ml.org/orwiki/wiki/index.php?title=%E3%80%8A%E3%83%90%E3%82%B1%E3%83%83%E3%83%88%E6%B3%95%E3%80%8B&amp;diff=1788&amp;oldid=prev</id>
		<title>122.26.167.76: 新しいページ: '【ばけっとほう (bucket method) 】  　計算幾何の実用的なアルゴリズムの代表的設計法の一つであり, 平面最小重み完全マッチング ...'</title>
		<link rel="alternate" type="text/html" href="https://orsj-ml.org/orwiki/wiki/index.php?title=%E3%80%8A%E3%83%90%E3%82%B1%E3%83%83%E3%83%88%E6%B3%95%E3%80%8B&amp;diff=1788&amp;oldid=prev"/>
		<updated>2007-07-05T06:19:59Z</updated>

		<summary type="html">&lt;p&gt;新しいページ: &amp;#039;【ばけっとほう (bucket method) 】  　計算幾何の実用的なアルゴリズムの代表的設計法の一つであり, 平面最小重み完全&lt;a href=&quot;/orwiki/wiki/index.php?title=%E3%83%9E%E3%83%83%E3%83%81%E3%83%B3%E3%82%B0&quot; title=&quot;マッチング&quot;&gt;マッチング&lt;/a&gt; ...&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;【ばけっとほう (bucket method) 】&lt;br /&gt;
&lt;br /&gt;
　計算幾何の実用的なアルゴリズムの代表的設計法の一つであり, 平面最小重み完全[[マッチング]] (matching), [[点位置決定]] (point location) などが[[バケット法]] (bucket method) に基づいて効率的に解かれている. 簡単のため2次元で説明するが, 高次元にも容易に一般化できる. 平面上にサイズ$n$の解きたい問題が与えられたとする. 問題を含む領域を軸に平行な辺からなる長方形で覆い, 軸に垂直な直線を引いて$\Theta(n)$個のバケットと呼ばれる合同な小長方形に分割する. そして全体の問題をそれぞれのバケット内の問題として分割して記憶する. すると通常はバケット内での問題だけで全体の解が得られるので高速になる. バケット間にまたがる情報を必要に応じて利用しなければならない場合もあるがこの場合も高速な手法があることが多い. &lt;br /&gt;
&lt;br /&gt;
　具体例でより詳しく説明する. 与えられた平面上の$n=2m$個の点集合に対して, $2$点ずつペアにして$m$個のペアの集合$M$をつくるという問題を考える. このような$M$は, 完全マッチングと呼ばれている. その際, ペアの重みをそのペアに含まれる$2$点間の距離($2$点を結ぶ線分の長さ)とする. 完全マッチング$M$の重みを$M$に含まれる$m$個のペアの重みの総和と見なし, 重みを最小にする完全マッチングを求める問題を平面最小重み完全マッチングというが, この問題をバケット法に基づいて解決しその実用性を実証した研究 [2] が, 計算幾何学の問題に対するバケット法の最初の適用例といわれている. できるだけ小さい重みの完全マッチングをつくるわけであるので, 遠く離れた$2$点がペアになる可能性は低い. そこで, 対象領域(長方形領域)を縦横$\lceil \sqrt{n}\ \rceil$等分し全部で$\lceil \sqrt{n} \ \rceil \times \lceil \sqrt{n} \ \rceil=\Theta(n)$個のバケットに分割して, 同一のバケットに含まれる点でまずペアをつくる. 最小重みの完全マッチングには距離の小さい$2$点がペアとして含まれることが多いので, 同一のバケットに含まれるもの同士をペアにするということは, 同一のバケットに含まれる$2$点は極めて近い点である可能性が高く, 異なるバケットに属する$2$点は遠くにある可能性が高いという, 自然な仮定に基づいている. &lt;br /&gt;
&lt;br /&gt;
　このように, バケット法では問題を局所領域に限定できるという特徴がある. さらに, 与えられる点の集合が対象領域において一様に分布するときは, $n=2m$個の点に対してほぼ同数個のバケットに分割しているので, 各バケットは平均的に一定数($\mbox{O}(1)$)個の点しか含まないといえる. したがって, 各バケット内での最小重み完全マッチングは$\mbox{O}(1)$の手間で見つけることができる. このように, バケット法では, バケット内の問題が極めて単純であるという特徴も併せもっている. さらに, バケットは合同な長方形であるため, バケットに含まれる点も簡単に求められるという特徴もある. このような特徴から, バケット法に基づく手法は, 一般に極めて高速となる [1]. &lt;br /&gt;
&lt;br /&gt;
　上の平面最小重み完全マッチングの問題では, バケット内での完全マッチングだけでは, 全体の完全マッチングとはならずに, ペアにされていない点が残るのが普通で, 最終的には, バケット間にまたがる点同士でさらにペアをつくっていかなければならないが, これは, $2$次元バケット間の距離を, ある程度忠実に保存するようにして, 一列に並べ, その順番で次々とペアにしていけばよい. このようにして求められた完全マッチングは, 最小重みの完全マッチングでないことが多いが, 詳細な解析により, かなり精度の高い解となることが保証されている [2]. 最適解はネットワークのアルゴリズムを用いて$\mbox{O}(n^3)$の手間で解けるが, 上記のバケット法に基づく方法は$\mbox{O}(n)$の手間であり, 実際の応用では極めて有効である. &lt;br /&gt;
&lt;br /&gt;
　平面最小重み完全マッチングをプロッターでペンを用いて地図を描く際の筆順最適化 (optimal drawing (of map) ) に応用する. 地図をきれいに描くため, 同じ線を$2$度描くことはしないものとする. ペンをおろして線を描いているときもあるし, ペンを上げて次に描くべき線の始まりまで移動しているときもある. 地図を描くという観点からすると, ペンをおろして線を描くという動作は必要不可欠なものである. これに対して, ペンを上げて次に描くべき線の始まりまで移動する動作は, 空送りと呼ばれ無駄な動作であるので, できるだけ少なくするのがよい. さて, 地図が一筆書き可能なら空送りをすることなく描けることになる. 地図が一筆書き不可能ならば空送りの部分に対応する線を付け加えた図で一筆書きできるように変形して描くことになる. プロッターでの描画に要する時間は, ほぼ, この$2$つの動作に要する時間の総和になるので, 描画時間を減らすには, 空送り全体に要する時間を減らせばよい. これらの動作に要する時間は移動量に比例するものとすれば, 空送り全体の移動量(移動距離)を最小にすれば, 描画に要する時間は最小ということになる. これは平面最小重み完全マッチングに帰着できる. 地図が一筆書き不可能ならば奇数本の線が接続する点を全部拾ってきて(すると点は偶数個になる), $2$個ずつペアにして完全マッチングを求め, 完全マッチングに含まれる線を空送りに対応させて付け加えれば一筆書きできることになる. 完全マッチングの選び方により付け加えた線の総長は異なるので, 総長最小の完全マッチングを求める問題となる. &lt;br /&gt;
&lt;br /&gt;
　その他の計算幾何の様々な探索問題に対するバケット法の応用については文献 [1, 3] を参照のこと. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
参考文献&lt;br /&gt;
&lt;br /&gt;
[1] T. Asano, M. Edahiro, H. Imai, M. Iri and K. Murota, &amp;quot;Practical Use of Bucketing Techniques in Computational Geometry,&amp;quot; in ''Computational Geometry'', G.T. Toussaint, ed., North-Holland, 1985.&lt;br /&gt;
&lt;br /&gt;
[2] M. Iri, K. Murota and S. Matsui, &amp;quot;Heurisitics for Planar Minimum Weight Perfect Matchings,&amp;quot; ''Networks'', '''13''' (1983), 67-92. &lt;br /&gt;
&lt;br /&gt;
[3] 伊理正夫監修, 腰塚武志編集, 『計算幾何学と地理情報処理(第２版)』, 共立出版, 1993.&lt;/div&gt;</summary>
		<author><name>122.26.167.76</name></author>
	</entry>
</feed>