- A < B ....... A - B < - EPS
- A > B ....... A - B > EPS
- A == B ....... abs(A - B) <= EPS
- A <= B ....... A - B <= EPS
- A >= B ....... A - B >= - EPS
\(
\newcommand{\ord}[1]{\mathcal{O}\left(#1\right)}
\newcommand{\abs}[1]{\lvert #1 \rvert}
\newcommand{\floor}[1]{\lfloor #1 \rfloor}
\newcommand{\ceil}[1]{\lceil #1 \rceil}
\newcommand{\opord}{\operatorname{\mathcal{O}}}
\newcommand{\argmax}{\operatorname{arg\,max}}
\newcommand{\str}[1]{\texttt{"#1"}}
\)
2015年12月30日 星期三
[ round-off error eps ] 浮點數誤差模板
有些計算幾何的過程中會產生捨位誤差,這時候就需要決定一個很小的數,去避開這個捨位誤差問題,我們稱那個很小的數為EPS
2015年12月27日 星期日
[ Maze generation-Randomized Kruskal's algorithm ] 迷宮生成-隨機Kruskal算法
說得通俗點,就是"隨機拆牆"。
一開始假設所有牆都在,也就是圖的每個點都不連通。如果當前不滿足“任意兩個格子間都有唯一路徑”,那麼就隨機選擇一堵牆,要求牆兩端的格子不連通,即它們對應的兩個頂點在兩個不同的連通分量。把這堵牆拆掉,即在後牆兩端的格子對應的頂點間建立一條邊。重複作下去,直到所有的點都在同一個連通分量裡面。
會發現這就是隨機合併點的Kruskal演算法,需要用到並查集
範例生成圖:
#########################
# # # # #
### # # # ### ####### ###
# # # # # # #
######### ### # # ##### #
# # # # # #
### ### # # # ### ### ###
# # # # # #
### # ##### ### ##### ###
# # # # # # #
####### # ### # ####### #
# # # # # # # #
# ### ### ### # ##### # #
# # # # # # # # # #
# # ### # ### ### # # # #
# # # # # #
# # ### ######### # #####
# # # # # # # #
####### # # # # ### ### #
# # # # #
# # ##### ######### # ###
# # # # #
### # # ### # ####### ###
# # # # # # #
#########################
code(n,m必須是奇數):
一開始假設所有牆都在,也就是圖的每個點都不連通。如果當前不滿足“任意兩個格子間都有唯一路徑”,那麼就隨機選擇一堵牆,要求牆兩端的格子不連通,即它們對應的兩個頂點在兩個不同的連通分量。把這堵牆拆掉,即在後牆兩端的格子對應的頂點間建立一條邊。重複作下去,直到所有的點都在同一個連通分量裡面。
會發現這就是隨機合併點的Kruskal演算法,需要用到並查集
範例生成圖:
#########################
# # # # #
### # # # ### ####### ###
# # # # # # #
######### ### # # ##### #
# # # # # #
### ### # # # ### ### ###
# # # # # #
### # ##### ### ##### ###
# # # # # # #
####### # ### # ####### #
# # # # # # # #
# ### ### ### # ##### # #
# # # # # # # # # #
# # ### # ### ### # # # #
# # # # # #
# # ### ######### # #####
# # # # # # # #
####### # # # # ### ### #
# # # # #
# # ##### ######### # ###
# # # # #
### # # ### # ####### ###
# # # # # # #
#########################
code(n,m必須是奇數):
2015年12月21日 星期一
[ min-max heap ] 最小-最大堆
最小-最大堆(Min-Max Heaps)是一個完整二元樹。此二元樹是交替的階層方式呈現,分別為最小階層 ( min level ) 和最大階層 ( max level ) ,這裡實作樹根為最小鍵值。
最小-最大堆是一種堆積支援以下幾種操作:
Min-Max Heaps and Generalized Priority Queues
以下提供模板:
最小-最大堆是一種堆積支援以下幾種操作:
- 求最大值 - max()
- 求最小值 - min()
- 刪除最大值 - pop_max()
- 刪除最小值 - pop_min()
- 元素入堆 - push()
Min-Max Heaps and Generalized Priority Queues
以下提供模板:
訂閱:
文章 (Atom)