原创 圖以及DFS和BFS

圖: struct Edge{ Point start; Point end; }; class graph { private: int edge[1000][1000]; Edge ed

原创 最大流和最小割:Edmonds_Karp算法

最大流:從s->t可以通過的最大流量 最小割:將圖用一條直線切斷,並將s和t分到不同的2邊,此爲一個割,割會經過圖中的邊,這些邊的容量(只算從s->t方向的)總和爲c,當c最小時,此割即爲最小割.可以證明,最大流=最小割的容量!

原创 c++ matlab混合編程時mxArray 內存泄露問題

對於mxArray在創建完後若使用完一定要注意回收空間,不然會memory leak.如果是mxstruct,只要對其中的field進行了賦值操作,那麼其原先的field一定要先進行memory的回收! eg: c++中要調用o

原创 LeetCode 338 :Counting Bits

Given a non negative integer number num. For every numbers i in the range 0 ≤ i ≤ num calculate the number of 1’s i

原创 Matlab的矩陣存儲和opencv mat的區別

opencv 的mat和matlab的mat下標索引都是一樣的,第一個索引代表row,即行號,第二個是列號,主要是索引和笛卡爾座標x、y有衝突!x是按列來進行變化,y是row上面的,故mat中的索引[a][b]對應的是(y,x),

原创 vs2013調用matlab函數

法一(常用方法):使用engine。 1、添加matlab環境: 在vs2013中vc-directory中添加matlab的excutable 、include、library的directory Include: E:

原创 matlab 2014b 調用 vs2013 + opencv混合編程配置、mat 與 mxarray的轉換、matlab在vs2013中調試

一、編譯 首先設置mex -setup,然後進行文件的編譯,有現成的.m類似腳本的代碼如下: mex -g 命令開啓在vs下可以調試,否則不能調試。 % This cppmake.m is for MATLAB % Funct

原创 尋找最近點對

問題:在空間中有n個點,尋找空間中最近的2個點。 法一:遍歷,O(n^2) 法二:分治算法: 將點分爲左右兩半,分別找到最近的2個點,然後考慮交叉位置的點對中的最小距離,在這3者中取最小的那個。O(nlogn)。 步驟:

原创 sort簡單分析

排序算法分析(都以從小到大爲例): 1、Insertsort:(原地排序) 最壞情況:從大到小排列(逆序),6,5,4,3,2,1, 比較(移動次數要乘以3)次數=n*(n - 1) / 2; 最好情況:從小到大排列(正序)

原创 opencv codebook學習

該算法對圖像的每一個像素位置建立一個碼本(codebook),每一個碼本有多個碼元(ce)多通道的,每一個碼元都有自己的lowbound和upbound。在學習時候,對於每一張圖片中的每一個像素,進行相應的碼本匹配,如果像素值在碼

原创 Vertex cover problem(NP)算法是多項式的?

3.1. Procedure. Given a simple graph G with n vertices and a vertex cover C of G, if C has no removable vertices, o

原创 凸包算法分析

toleft: 對於toleft的計算,是通過叉積的定義來進行的,叉積代表面積,且方向爲順時針,那麼如果大於0,則認爲k在ab向量的左邊. 對於2個向量a(x1,y1),b(x2,y2),將其進行行列式的計算,第三維補0,計算

原创 dijkstra算法

用一個n行2列的數組res[n][2]來存結果即可,其中第一列存到源點start_p的距離,第二列存改點到源點最短路徑的前一個節點。 每一次在加入節點都是加入的當前時刻距離源點距離最近的那個點。 #include <iostrea

原创 FLOYD算法

此爲動態規劃的思想,通過比較dist[i][j]與dist[i][k] + dist[k][j]來選擇,而且k必須是外層循環,因爲其是以k爲子問題的,如果k在最裏層,則很多子問題都沒有算到。圖的表示是矩陣表示,無直接邊則爲INF,

原创 DFS應用:圖的拓撲排序以及Kosaraju強連通分量算法

圖的DFS算法對於每一個圖節點u有2個重要的時間d[u]和f[u],分別代表找到u的時間(其變爲灰色節點的時間)以及u完成的時間(其變爲黑色節點的時間). f[u]越大可能其在最上面(樹根處),所以要等其所有子孫都完成其才能完成