<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://metabolomics.jp/mediawiki/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://metabolomics.jp/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Aritalab%3ALecture%2FAlgorithm%2FGraphNormalization</id>
		<title>Aritalab:Lecture/Algorithm/GraphNormalization - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://metabolomics.jp/mediawiki/index.php?action=history&amp;feed=atom&amp;title=Aritalab%3ALecture%2FAlgorithm%2FGraphNormalization"/>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/mediawiki/index.php?title=Aritalab:Lecture/Algorithm/GraphNormalization&amp;action=history"/>
		<updated>2026-06-15T11:31:19Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.19.1</generator>

	<entry>
		<id>http://metabolomics.jp/mediawiki/index.php?title=Aritalab:Lecture/Algorithm/GraphNormalization&amp;diff=254172&amp;oldid=prev</id>
		<title>Adm: /* 正規化の難しさ */</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/mediawiki/index.php?title=Aritalab:Lecture/Algorithm/GraphNormalization&amp;diff=254172&amp;oldid=prev"/>
				<updated>2011-06-01T16:11:39Z</updated>
		
		<summary type="html">&lt;p&gt;‎&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;正規化の難しさ&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Older revision&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 16:11, 1 June 2011&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 35:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 35:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;グラフがトポロジカルに対称性を持つかどうか、という問いも同じ難しさを持ちます。もしトポロジカルな対称性を多項式時間で解ける場合、グラフ同型を試したい二つのグラフを１本の辺で結んでこのアルゴリズムを適用するだけで同型問題が解けてしまいます（対称なら同型、対称でないなら非同型）。&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;グラフがトポロジカルに対称性を持つかどうか、という問いも同じ難しさを持ちます。もしトポロジカルな対称性を多項式時間で解ける場合、グラフ同型を試したい二つのグラフを１本の辺で結んでこのアルゴリズムを適用するだけで同型問題が解けてしまいます（対称なら同型、対称でないなら非同型）。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&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: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;これまでChemical &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Informationと呼ばれる分野で数多く提唱されてきたグラフの正規化アルゴリズムは、特にregular &lt;/del&gt;graphと呼ばれる頂点次数が一定のグラフ構造に適用できません。計算機科学の分野では、既に1970年に（隣接頂点だけでなく）離れた頂点までのステップ数による分類を考慮した正規化アルゴリズムが提案されています。&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;これまでChemical &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Informationと呼ばれる分野で数多く提唱されてきたグラフの正規化アルゴリズムはすべて不完全です。特にregular &lt;/ins&gt;graphと呼ばれる頂点次数が一定のグラフ構造に適用できません。計算機科学の分野では、既に1970年に（隣接頂点だけでなく）離れた頂点までのステップ数による分類を考慮した正規化アルゴリズムが提案されています。&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;* DG Corneil, CC Gotlib &amp;quot;An efficient algorithm for graph isomorphism&amp;quot; J. Assoc. Comput. Mach. 17 (1) 51-64, 1970.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;* DG Corneil, CC Gotlib &amp;quot;An efficient algorithm for graph isomorphism&amp;quot; J. Assoc. Comput. Mach. 17 (1) 51-64, 1970.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;* DG Corneil, DG Kirkpatrick &amp;quot;A theoretical analysis of various heuristics for the graph isomorphism problem&amp;quot; SIAM J. Comput. 9, 281-297, 1980.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;* DG Corneil, DG Kirkpatrick &amp;quot;A theoretical analysis of various heuristics for the graph isomorphism problem&amp;quot; SIAM J. Comput. 9, 281-297, 1980.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&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: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;化学分子のようにregularな要素が少ない構造では、このアルゴリズムで十分でしょう (&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Morganだけでは不十分）。&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;化学分子のようにregularな要素が少ない構造では、このアルゴリズムで十分でしょう (&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;しかしMorgan法だけでは不十分です）。&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Adm</name></author>	</entry>

	<entry>
		<id>http://metabolomics.jp/mediawiki/index.php?title=Aritalab:Lecture/Algorithm/GraphNormalization&amp;diff=254171&amp;oldid=prev</id>
		<title>Adm: Created page with &quot;==グラフ構造の正規化== 化学構造をデータベース化する際に、構造が同じであるかどうかが迅速に検出できると便利です。例えば新...&quot;</title>
		<link rel="alternate" type="text/html" href="http://metabolomics.jp/mediawiki/index.php?title=Aritalab:Lecture/Algorithm/GraphNormalization&amp;diff=254171&amp;oldid=prev"/>
				<updated>2011-06-01T16:09:28Z</updated>
		
		<summary type="html">&lt;p&gt;Created page with &amp;quot;==グラフ構造の正規化== 化学構造をデータベース化する際に、構造が同じであるかどうかが迅速に検出できると便利です。例えば新...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==グラフ構造の正規化==&lt;br /&gt;
化学構造をデータベース化する際に、構造が同じであるかどうかが迅速に検出できると便利です。例えば新しい構造があるとき、データベース中に既に登録されているかをどう調べればよいでしょう。一般的には化学構造を適切なルールに従って比較しやすい標準形にします。この標準化プロセスを正規化(canonicalizationまたはnormalization)といいます。&lt;br /&gt;
&lt;br /&gt;
計算機で構造を処理する場合、構造を文字列で書き下せると便利です。この文字列はいってみれば構造の「名前」を生成することと等価なので、unique nameなどと呼ばれることもあります。&lt;br /&gt;
&lt;br /&gt;
===基準番号付けによる正規化===&lt;br /&gt;
&lt;br /&gt;
MOLフォーマットやSMILESフォーマットは原子を書く順番が任意のため、そのままでは構造の比較は困難です。そこで原子に１から順に基準番号を振り、構造の同一性を番号順に調べればよいというアイデアを思いつきます。（ただし対称な構造を持つ場合は、番号が一意にはなりません。）これは基準番号付け(canonical numbering)と呼ばれます。分子構造をグラフ構造とみなせば、グラフ頂点にトポロジーに基づく基準番号を振る作業に対応します。&lt;br /&gt;
&lt;br /&gt;
===Morgan法による番号付け===&lt;br /&gt;
&lt;br /&gt;
Morgan法はグラフ頂点に整数ラベルを振り、頂点の接続数に基づいてラベルを更新することで、トポロジカルに同じ頂点が同じ整数ラベル持つようにするアルゴリズムです　(HL Morgan: J. Chem. Doc. 5, 107-113, 1965)&lt;br /&gt;
&lt;br /&gt;
;アルゴリズムの概略&lt;br /&gt;
&lt;br /&gt;
#各頂点 ''v'' において、頂点の表す原子番号と隣接する化学結合の数、タイプ（二重結合かどうかなど）から初期ラベル ''l&amp;lt;sub&amp;gt;v&amp;lt;/sub&amp;gt;'' を生成する。&lt;br /&gt;
#ラベルにしたがって頂点を分類する。この時点では結合の数やタイプが同じ原子なら、全て同じラベルを持っている。&lt;br /&gt;
#各ラベル ''l&amp;lt;sub&amp;gt;v&amp;lt;/sub&amp;gt;'' に、 ''v'' に隣接する頂点が持つラベルを全て足しこんで更新する。&amp;lt;br/&amp;gt;&amp;lt;math&amp;gt;l_v := l_v + \sum l_w \,( w \in adj(v) )&amp;lt;/math&amp;gt;&lt;br /&gt;
#ラベルを更新することで頂点の分類が進んでいる限り、ステップ３を繰り返す。&lt;br /&gt;
#ラベルの数にしたがって、番号付けをおこなう。&lt;br /&gt;
&lt;br /&gt;
初期のアルゴリズムは不斉情報を取り扱っていませんでしたが、不斉炭素のパリティをラベルに足しこむという簡単な拡張がSEMA(stereochemically extended Morgan algorithm)法と呼ばれ、現在でも利用されています(WT Wipke, TM Dyott: J Am Chem Soc 96:4834-4842, 1974)。&lt;br /&gt;
&lt;br /&gt;
Morgan（またはSEMA）法は、隣接するラベルを足しこむだけなので、以下の問題点があります。&lt;br /&gt;
&lt;br /&gt;
* 足し算の過程でたまたまラベルが一致してしまうことがある。&lt;br /&gt;
* 結合次数が均一のグラフ（例えばinositol)はラベルが同じになってしまうので検出できない。&lt;br /&gt;
&lt;br /&gt;
SMILESによる構造の正規化として提案されている手法は足し算の代わりに掛け算を使っており、問題１が生じる確率を低くしています(D Weininger, A Weininger, JL Weininger: J Chem Inf Comput Sci 29:97-101, 1989)。しかし、問題２の本質的な解決にはなっていません。&lt;br /&gt;
&lt;br /&gt;
===正規化の難しさ===&lt;br /&gt;
&lt;br /&gt;
一般的なグラフ構造の正規化は難しい問題です。もし正規化が多項式時間で達成できたと仮定しましょう。グラフが正規化されればそのサイズに線形の時間で構造の同一性が確認できるため、グラフの同型問題(Graph Isomorphism Problem)、つまり２つのグラフがトポロジカルに同一かどうかという問題を多項式時間で解いたことになります。しかしこれは現在、クラスPかNPに属することがわかっていない、計算機科学における有名な未解決問題のひとつであり、容易には解けないことが予想されます。（グラフの同型問題は計算機科学以外の分野でしばしばNP-hardと誤解されています。）&lt;br /&gt;
&lt;br /&gt;
グラフがトポロジカルに対称性を持つかどうか、という問いも同じ難しさを持ちます。もしトポロジカルな対称性を多項式時間で解ける場合、グラフ同型を試したい二つのグラフを１本の辺で結んでこのアルゴリズムを適用するだけで同型問題が解けてしまいます（対称なら同型、対称でないなら非同型）。&lt;br /&gt;
&lt;br /&gt;
これまでChemical Informationと呼ばれる分野で数多く提唱されてきたグラフの正規化アルゴリズムは、特にregular graphと呼ばれる頂点次数が一定のグラフ構造に適用できません。計算機科学の分野では、既に1970年に（隣接頂点だけでなく）離れた頂点までのステップ数による分類を考慮した正規化アルゴリズムが提案されています。&lt;br /&gt;
&lt;br /&gt;
* DG Corneil, CC Gotlib &amp;quot;An efficient algorithm for graph isomorphism&amp;quot; J. Assoc. Comput. Mach. 17 (1) 51-64, 1970.&lt;br /&gt;
* DG Corneil, DG Kirkpatrick &amp;quot;A theoretical analysis of various heuristics for the graph isomorphism problem&amp;quot; SIAM J. Comput. 9, 281-297, 1980.&lt;br /&gt;
&lt;br /&gt;
化学分子のようにregularな要素が少ない構造では、このアルゴリズムで十分でしょう (Morganだけでは不十分）。&lt;/div&gt;</summary>
		<author><name>Adm</name></author>	</entry>

	</feed>