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¤Ê¤É¾¤Ë¤â¿§¡¹¤È¤¢¤ë¤ó¤À¤±¤É¤Í¡£
´ðËÜŪ¤ÊÌڤι½Â¤¤Ï³Ð¤¨¤Æ¡¢Ä¾´¶Åª¤Ë·×»»Î̤Ȥ«¤¬¥¤¥á¡¼¥¸¤Ç¤¤ë¤Þ¤ÇǼÆÀ¤µ¤»¤ë¤³¤È¤¬Âè°ì¡£¤½¤Î¾å¤Ç¡¢ÌÜŪ¤Ë±þ¤¸¤Æ¼«Ê¬¼«¿È¤Ç¥Ç¡¼¥¿¹½Â¤¤òºî¤ì¤ë¤è¤¦¤Ë¤Ê¤ë¤³¤È¤¬½ÅÍס£
º£²ó¤Ï¼«Ê¬¤Ç¼ÂÁõ¤·¤Ê¤«¤Ã¤¿¤Î¤Ç¡¢¤Þ¤À¤Þ¤ÀÊ¢¤ËÍî¤Á¤Æ¤Ê¤¤¤Ê¡£
¼¡²ó¤Ï¥Ç¡¼¥¿¹½Â¤¤Î³¤¡£
- 3 http://www.google.co.jp/url?sa=t&rct=j&q=typeperf+cpu»ÈÍÑΨ&source=web&cd=4&ved=0CDYQFjAD&url=http://d.hatena.ne.jp/J0__0K/20111127/1322400334&ei=uFQWT96TCaqZmQW29qG8Aw&usg=AFQjCNEYjqHGWEzA62CsS7uUVgcVP4VpGA
- 2 http://d.hatena.ne.jp/keyword/¿ô³ØÅªµ¢Ç¼Ë¡
- 1 http://d.hatena.ne.jp/keyword/¥¯¥¤¥Ã¥¯¥½¡¼¥È
- 1 http://search.yahoo.co.jp/search?p=typeperf&aq=-1&ei=UTF-8&pstart=1&fr=top_ga1_sa&b=11
- 1 http://www.google.co.jp/hws/search?hl=ja&q="¥«¥¦¥ó¥¿¤òÆÉ¤ß¹þ¤á¤Þ¤»¤ó"&client=fenrir&adsafe=off&safe=off&lr=all
- 1 http://www.google.co.jp/url?sa=t&rct=j&q=¥«¥¦¥ó¥¿¡¼¤òÆÉ¤ß¹þ¤á¤Þ¤»¤ó&source=web&cd=8&ved=0CF4QFjAH&url=http://d.hatena.ne.jp/J0__0K/20111127/1322400334&e
- 1 http://www.google.co.jp/url?sa=t&rct=j&q=mit text sort algorithm&source=web&cd=3&ved=0CDIQFjAC&url=http://d.hatena.ne.jp/J0__0K/20111229/1325180528&ei=ODMZT4iqA-aKmQXLo9isCg&usg=AFQjCNGe6wDbpu0pgzk677gZ7FzRBkkJXQ
- 1 http://www.google.co.jp/url?sa=t&rct=j&q=typeperf £Ã£Ð£Õ»ÈÍÑΨ&source=web&cd=4&ved=0CEEQFjAD&url=http://d.hatena.ne.jp/J0__0K/20111127/1322400334&ei=AN0TT9MaivyYBeix5fYD&usg=AFQjCNEYjqHGWEzA62CsS7
- 1 http://www.google.co.jp/url?sa=t&rct=j&q=typeperf cpu»ÈÍÑΨ&source=web&cd=4&sqi=2&ved=0CEUQFjAD&url=http://d.hatena.ne.jp/J0__0K/20111127/1322400334&ei=8FoRT82vBuPamAXZi7mACg&usg=AFQjCNEYjqHGWEzA62CsS7uUVgcVP4VpGA&sig2=B
- 1 http://www.google.co.jp/url?sa=t&rct=j&q=typeperf+͸ú¤Ê¥«¥¦¥ó¥¿¡¼¤¬¤¢¤ê¤Þ¤»¤ó&source=web&cd=5&ved=0CEwQFjAE&url=http://d.hatena.ne.jp/J0__0K/20111