J0__0K¤ÎÈ÷˺Ͽ

2012-01-14

MIT Open course: Introduction to Algorithms¤Î¤Þ¤È¤á(9¡Á11²ó)

¥Ç¡¼¥¿¹½Â¤1¡¢ÌÚ

¢¡Æóʬõº÷ÌÚ¡¡BST(Binary Search Tree)
¢þÆÃħ
³Æ¥Î¡¼¥É¤ËÃͤò¤â¤Á¡¢ ¤½¤ÎÃͤ¬º¸¤Î»Ò¥Î¡¼¥É¤ÎÃͰʾå¤Ç¡¢ ±¦¤Î»Ò¥Î¡¼¥É¤ÎÃͰʲ¼¤Ç¤¢¤ë¤è¤¦¤Ê2ʬÌÚ
¡¦¾ÜºÙ¤Ï¤³¤³¤Ç¢ªbinary search tree
¡¦¥¯¥¤¥Ã¥¯¥½¡¼¥È¤È½çÈ֤ϰۤʤ뤬Ʊ¤¸Èæ³Ó¤ò¹Ô¤¦¡£
¢þ·×»»»þ´Ö
¡¦walk¡¡O(n)
¡¦nÁÞÆþ ­¡¾ï¤Ë¦¸(nlogn) if lucky (balanced tree) ­¢O(n^2) if unlucky(already sorted)

¢¡¥é¥ó¥À¥à2ʬõº÷ÌÚ
¢þÆÃħ
¡¦ÆþÎÏÎó¤ò¥é¥ó¥À¥à¤ËʤÓÂØ¤¨¤Æ¤«¤é¡¢BST¤òºî¤ë
¡¦¥é¥ó¥À¥à¥¯¥¤¥Ã¥¯¥½¡¼¥È¤È¤Û¤ÜƱ¤¸
¢þ·×»»»þ´Ö
¡¦E[õº÷·×»»ÎÌ]=¦¨(logn)¢«³Æ¥Î¡¼¥É¤Î¿¼¤µ¤ÎÊ¿¶Ñ
¡¦E[height of Rand.built BST]=¦¨(logn)¢«Rand¥Ð¡¼¥¸¥ç¥ó¤Ç¤ÎÌڤι⤵(w-c)¤ÎÊ¿¶Ñ¡¢¾ÚÌÀά
¢ªÊ¿¶Ñ¤·¤Æ¡¢¹â¤µlogn¤ÎBalance¤Î¤È¤ì¤¿ÌÚ¤¬´°À®¤¹¤ë

¢¡Red Black Tree
¢þÆÃħ
¡¦ÄêµÁ
­¡Á´¤Æ¤Î¥Î¡¼¥É¤Ï¹õ¤«À֤Υե£¡¼¥ë¥É¤ò»ý¤Ä
­¢º¬¤ÈÍդϹõ
­£À֥Ρ¼¥É¤Î¿Æ¤Ï¹õ¥Î¡¼¥É
­¤¤¢¤ë¥Î¡¼¥Éx¤ÎÁ´¤Æ¤ÎËöêã¤Ø¤Î¹õ¤Î¤ß¤Î¹â¤µ(black-height(x))¤Ï¶¦ÄÌ
¢þ·×»»»þ´Ö
¡¦height<=¦¨(logn)¢ªworst case¤Ç¤â¾ï¤ËO(logn)
¡Êľ´¶Åª¤ÊÍý²ò¤Ï¡¢À֥Ρ¼¥É¤ò¹õ¥Î¡¼¥É¤Ë¤¯¤Ã¤Ä¤±¤¿ÌÚT'¤ò¹Í¤¨¤ì¤Ð¡¢ÍÕ¤ÏÁ´¤ÆÆ±¤¸¿¼¤µ¤È¤Ê¤ë¡£T'¤Î¹â¤µh'¤Ï¡¢­£¤ò¹Í¤¨¤ì¤Ð¸µ¤Î¹â¤µh¤ÎȾʬ°Ê¾å¤Ç¡¢Íդοô(n¤¯¤é¤¤)¤Ï2^h'¤è¤ê¤âÂ礭¤¤¡Ë
¡¦¥¯¥¨¥ê¡¼(õº÷¡¢ºÇ¾®¡¢ºÇÂç...)¤â¥¢¥Ã¥×¥Ç¡¼¥È(ÁÞÆþ¡¢¾Ãµî)¤âO(logn)
¢þÁÞÆþ
¡¦ÉáÄ̤ËÁÞÆþ¤·¡¢¥Î¡¼¥É¤Î¿§¤òÀ֤ˤ¹¤ë
¡¦­£¤ÎÌ·½â¤ò²ò·è¤¹¤ë¤¿¤á¤Ë¡¢­¡¿§Êѹ¹(¤Û¤È¤ó¤É¤³¤ÎÁàºî)¡¢­¢rotation¤ò·«¤êÊÖ¤·¼Â¹Ô

¢¡¥Ç¡¼¥¿¹½Â¤¤ÎºîÀ®¢«´û¸¤Î¥Ç¡¼¥¿¹½Â¤¤òÍøÍѤ·¤Æ¿·¤·¤¤¥Ç¡¼¥¿¹½Â¤¤òÀ߷פ¹¤ë
¢þÊýË¡ÏÀ(°ìÈÌ)
1.¸µ¤È¤Ê¤ë¥Ç¡¼¥¿¹½Â¤¤ò·èÄꤹ¤ë
2.ÄɲäξðÊó¤ò·èÄꤹ¤ë
3.½¤ÀµÁàºî(insertÅù)¤Ë¤è¤Ã¤ÆÆÃħ¤¬Êݤ¿¤ì¤ë¤«¤É¤¦¤«¤ò¸¡¾Ú¤¹¤ë
4.¿·¤·¤¤Áàºî¤òÄɲ乤ë
¢þÎã1 ¤¢¤ëÇÛÎó¤¬Í¿¤¨¤é¤ì¤¿¤È¤­¤Ë¡¢¡ÖkÈÖÌܤ˾®¤µ¤¤ÃͤòÊÖ¤¹¡×¡¢¡Ö¤¢¤ëÃÍx¤¬²¿ÈÖÌܤ˾®¤µ¤¤¤«¤òÊÖ¤¹¡×¤Î¤ËÅÔ¹ç¤ÎÎɤ¤¥Ç¡¼¥¿¹½Â¤¤òºî¤ê¤¿¤¤(Dynamic order statistics)
1.r-b tree
2.ÉôʬÌڤΥµ¥¤¥º¤ò¥Î¡¼¥É¤Ë»ý¤¿¤»¤ë(rank¤ò¤â¤¿¤»¤ë¤È½¤Àµ¤¬º¤Æñ)
3.rotation¤·¤Æ¤â¡¢ÉôʬÌڤΥµ¥¤¥º¤Î½¤Àµ¤ÏO(1)¤Ç²Äǽ
4.OS-select, OS-rank
¢þÎã2 ¤¿¤¯¤µ¤ó¤Î¶è´Ö¤¬Í¿¤¨¤é¤ì¤¿¤È¤­¤Ë¡¢¡Ö¤¢¤ë¶è´Öx=[low[x],high[x¤¬¤É¤Î¶è´Ö¤È¸ò¤ï¤ë¤«¤òÊÖ¤¹¡×¤Î¤ËÅÔ¹ç¤Î¤è¤¦¥Ç¡¼¥¿¹½Â¤¤òºî¤ê¤¿¤¤
1.r-b tree
2.key=low[x],ÉôʬÌÚ¤ÎÃæ¤ÇºÇÂç¤ÎÃͤò¾ðÊó¤È¤·¤Æ¤â¤Ä
3.rotation¤·¤Æ¤â¡¢ÉôʬÌÚ¾ðÊó¤Î½¤Àµ¤ÏO(1)¤Ç²Äǽ
4.Interval-search


ÌڤˤĤ¤¤Æ¡¢½é¤á¤Æ¤Þ¤È¤â¤ËÊÙ¶¯¤·¤¿¡£2-3-4tree¤äB-tree¤Ê¤É¾¤Ë¤â¿§¡¹¤È¤¢¤ë¤ó¤À¤±¤É¤Í¡£

´ðËÜŪ¤ÊÌڤι½Â¤¤Ï³Ð¤¨¤Æ¡¢Ä¾´¶Åª¤Ë·×»»Î̤Ȥ«¤¬¥¤¥á¡¼¥¸¤Ç¤­¤ë¤Þ¤ÇǼÆÀ¤µ¤»¤ë¤³¤È¤¬Âè°ì¡£¤½¤Î¾å¤Ç¡¢ÌÜŪ¤Ë±þ¤¸¤Æ¼«Ê¬¼«¿È¤Ç¥Ç¡¼¥¿¹½Â¤¤òºî¤ì¤ë¤è¤¦¤Ë¤Ê¤ë¤³¤È¤¬½ÅÍס£

º£²ó¤Ï¼«Ê¬¤Ç¼ÂÁõ¤·¤Ê¤«¤Ã¤¿¤Î¤Ç¡¢¤Þ¤À¤Þ¤ÀÊ¢¤ËÍî¤Á¤Æ¤Ê¤¤¤Ê¡£
¼¡²ó¤Ï¥Ç¡¼¥¿¹½Â¤¤Î³¤­¡£

¥¹¥Ñ¥àÂкö¤Î¤¿¤á¤Î¥À¥ß¡¼¤Ç¤¹¡£¤â¤·¸«¤¨¤Æ¤â²¿¤âÆþÎϤ·¤Ê¤¤¤Ç¤¯¤À¤µ¤¤
¥²¥¹¥È


²èÁüǧ¾Ú

¥È¥é¥Ã¥¯¥Ð¥Ã¥¯ - http://d.hatena.ne.jp/J0__0K/20120114/1326523299
¥ê¥ó¥¯¸µ