Time of Update: 2017-02-27
情境:存在表L1(A B C D E),有序表L2(2 4 8),有序表L3(2 5).刪除表L1中位 置序號屬於有序表L2和L3,即刪除後L1(A C).使用的資料結構是一個鏈表節點public class Inode { private int value; private Inode next; public Inode(int value) { this.value = value; next = null; } public Inode(int value,
Time of Update: 2017-02-27
問題的提出:約19世紀末,在歐州的商店中出售一種智力玩具,在一塊銅板上有三根杆,最左邊的杆上自上而下、由小到大順序串著由64個圓盤構成的塔。目的是將最左邊杆上的盤全部移到右邊的杆上,條件是一次只能移動一個盤,且不允許大盤放在小盤的上面。*問題分析與演算法設計這是一個著名的問題,幾乎所有的教材上都有這個問題。由於條件是一次只能移動一個盤,且不允許大盤放在小盤上面,所以64個盤的移動次數是:18,446,744,073,709,551,615這是一個天文數字,若每一微秒可能計算(並不輸出)一次移動,
Time of Update: 2017-02-27
基本概念:模式比對是對字串的一種非常重要的操作,假設被匹配的本文字串是 text,模式串是pattern,則模式比對的任務就是在text中找出所有的pattern, 給出pattern在text中的位置。例如:text是“cdghcdghhcdr”,pattern是“cd”,
Time of Update: 2017-02-27
現代商業流程越來越緊密整合:運輸、製造和財務緊密結合為客戶交付增加的商業價值,從而減少了費用。在過去40年 裡,自動化讓商業流程得到進一步發展,它將各專業工具和實踐集合成為一個整體價值鏈。客戶往往希望只需提供完他們的 資訊一次;並隨之假設你們的支援人員瞭解他們及他們產品的一切,並期望隨之的交易是直接的,並私人化。儘管如此,用 於建立和維護這些自動化系統的流程卻比它們支援的系統來得更加分化和無系統。典型的軟體交付項目會無數次地去擷取需
Time of Update: 2017-02-27
為了快速發布開發完成的功能,現代的互連網企業通常會以比較快的迭代周期來持續的發布。但是有時候因為技術或者 業務上的原因,需要在發布的時候將某些功能隱藏起來。一種解決方案是,在獨立的分支上開發新功能,全部開發測試完成 之後,才合并回主幹,準備發布。這也就是我們經常提到的功能分支(feature branch)。本文將介紹如何使用功能開關( feature toggle)來更好地解決這個問題,及其在一個典型Spring web應用程式中的具體實現,最後討論了功能開關和持續
Time of Update: 2017-02-27
EasyMock 以及 Mockito 都因為可以極大地簡化單元測試的書寫過程而被許多人應用在自己的工作中,但是這 2 種 Mock 工具都不可以實現對靜態函數、建構函式、私人函數、Final 函數以及系統函數的類比,但是這些方法往往是我們在 大型系統中需要的功能。PowerMock 是在 EasyMock 以及 Mockito 基礎上的擴充,通過定製類載入器等技術,PowerMock 實現了之前提到的所有類比功能,使其成為大型系統上單元測試中的必備工具。單元測試類比架構的功能及其實現
Time of Update: 2017-02-27
混合粒子群演算法將全域粒子群演算法與局部粒子群演算法結合,其速度更新採用公 式其中G(k+1)是全域版本的速度更新公式,而L(k+1)是局部版本的速度更新 公式,混合粒子群演算法採用H(k+1)的公式。位置更新公式因為是局部版本與全域版本相結合,所以,粒子群的初始化函數應該與局部版
Time of Update: 2017-02-27
標準粒子群演算法的實現思想基本按照粒子群演算法(2)----標準的粒子群演算法的講述實現。主要分為3個函數。第一個函數為粒子群初始化函數InitSwarm(SwarmSize......AdaptFunc)其主要作用是初始化粒子群的粒子,並設定粒子的速度、位置在一定的範圍內。本函數所採用的資料結構如下所示:表ParSwarm記錄的是粒子的位置、速度與當前的適應度值,我們用W來表示位置,用V來代錶速度,用F來代表當前的適應度值。在這裡我們假設粒子個數為N,每個粒子的維數為D。
Time of Update: 2017-02-27
粒子群演算法主要分為4個大的分支:(1)標準粒子群演算法的變形在這個分支中,主要是對標準粒子群演算法的慣性因子、收斂因子(約束因子)、“認知”部分的c1,“社會”部分的c2進行變化與調節,希望獲得好的效果。慣性因子的原始版本是保持不變的,後來有人提出隨著演算法迭代的進行,慣性因子需要逐漸減小的思想。演算法開始階段,大的慣性因子可以是演算法不容易陷入局部最優,到演算法的後期,小的慣性因子可以使收斂速度加快,使收斂更加平穩,不至於出現振蕩現象。經過本人
Time of Update: 2017-02-27
在上一節的敘述中,唯一沒有給大家介紹的就是函數的這些隨機的點(粒子)是如何運動的,只是說按照一定的公式更新。這個公式就是粒子群演算法中的位置速度更新公式。下面就介紹這個公式是什麼。在上一節中我們求取函數y=1-cos(3*x)*exp(-x)的在[0,4]最大值。並在[0,4]之間放置了兩個隨機的點,這些點的座標假設為x1=1.5;
Time of Update: 2017-02-27
1 介紹還記得在2年前剛剛接觸RoboCup的時候,從學長口中聽說了ANN(人工神經網路),這個東西可神奇 了,他能通過學會從而對一些問題進行足夠好處理。就像咱們人一樣,可以通過學習,瞭解新的知識。但是2年了,一直想學習ANN,但是一直沒有成功。原因很多,其中主要的原因是咱們國內的教程中關 於這個技術的介紹過於理論化,以至於我們基礎差和自學者望而卻步。現在,我希望通過一個簡單的樣本,讓大家先有一個感性的認識,然後再瞭解一些相應的理論,從而 達到更好的學習效果。2 範常式序的使用和說明本程式樣本2
Time of Update: 2017-02-27
RBF 網路起源於數值分析中的多變數插值的徑向基函數方法,其所具有的最佳逼近特性是傳統BP 網 絡所不具備的。三層的RBF 網路具有可以逼近任意函數的能力。假設網路中的輸入節點隱層節點輸出節點數分別為N,L,M 。隱含層的作用是對輸入模式進行變換將低 維的模式輸入資料轉換到高維空間內以利於輸出層進行分類識別。最常用的徑向基函數是高斯核函數 ,形式為 k(||x-xc||)=exp{- ||x-xc||^2/(2*σ)^2) } 其中xc為 核函數中心,σ為函數的寬度參數
Time of Update: 2017-02-27
人工神經網路(Artificial Neural Netwroks)筆記--離散多輸出感知器訓練演算法 中的2.1.3步是多 個判斷,因此我們說它是一種離散多輸出感知器現在採用公式 Wij=Wij+α(Yj-Oj)Xi取代了那個步驟Yj和Oj之間的差別對Wij的影響由α(Yj-Oj)Xi表現出來這樣做的好處是不僅使得演算法的控制在結構上更容易理解,而且還使得它的適應面更寬演算法流程如下:1.用適當的小偽隨機數初始化權矩陣W2.初置精度控制參數ε,學習率&
Time of Update: 2017-02-27
最近在重新學習人工神經網路(Artificial Neural Netwroks),做做筆記,整理思路離散單輸出感知器演算法,傳說中的MP二值網路:自變數及其函數的值、向量分量的值只取0和1函數、向量權向量:W=(w1,w2,w3.....wn)輸入向量:X=(x1,x2,x3.....xn)訓練樣本集{(X,Y)|Y為輸入向量X的輸出}訓練過程比較簡單如下:1,初始化權向量W2,重複下列過程,直到訓練完成:2.1對每個樣本(X,Y),重複如下過程: 2.1.1輸入X
Time of Update: 2017-02-27
上文中已經提到“基礎BP演算法“偏愛”較後出現的樣本,因此較後出現的樣本對網路影響較大”本文將記錄如何消除這個影響用(X1,Y1),(X2,Y2),....(Xs,Ys)的總效果丟該 W^(1),W^(2),...W^(L)△W^(K)ij=∑△pW^(k)ij只是替換了原來的簡單修改權重矩陣那部分具體演算法流程如下:1 for k-1 to L do1.1初始化 W^(k)2 初始化精度控制參數ε3 E=ε
Time of Update: 2017-02-27
delta規則增量學習Wij(t+1)=Wij(t)+α(Yj-Aj(t))Oi(t)式中 Wij(t+1)、Wij(t) 分別表示神經元ANi到ANj的聯結在時刻t+1和時刻t的強度,Oi(t)為ANi神經 元在時刻t的輸出,Yj為神經元ANj的理想輸出,Aj(t)為神經元ANj的啟用狀態,α為給定的學習率這是有監督學習(Supervised Learning)中最為重要,應用最普遍的delta規則增量學習(Delta Rule Learning)和
Time of Update: 2017-02-27
演算法設計背景:最近設計知識管理系統的資源匯入功能,為了盡量的做到組件化,方便擴充,方便其他模組使用。簡 化組件提供的和需要的介面,設計並實現了基於 Mapping 機制的匯入架構。其中有一功能用到了計算兩 個字串相似性的演算法,簡單設計如下以便參考:設計思想:把兩個字串變成相同的基本操作定義如下:1.修改一個字元(如把 a 變成 b)2.增加一個字元 (如 abed 變成 abedd)3.刪除一個字元(如 jackbllog 變成 jackblog)針對於
Time of Update: 2017-02-27
本文採用3次樣條函數,用分段插值的快速計算方法,實現了用滑鼠在螢幕上繪製任意光滑的曲線, 並同時使用折線重採樣的擬合方法,去除多餘的插值點。本文所敘述的演算法,可以用來繪製等高線等光 滑曲線,並且由於採用了折線的重採樣,以最小的資料量保證了繪圖的精確度。本文以作者2002年根據《計算方法》(同濟大學出版社)一書所述的演算法為基礎修改而得,因為時間 久遠,這裡不再敘述什麼是張力樣條的具體公式。僅僅對張力樣條做簡單介紹。1
Time of Update: 2017-02-27
1.插入排序-O(N2)插入排序由N-1趟排序組成。對於P=1趟和P=N-1趟 ,插入排序保證從位置0到位置P上的元素為已排序狀態。typedef int ElementType;void Swap( ElementType *Lhs, ElementType *Rhs ) { ElementType Tmp = *Lhs; *Lhs = *Rhs; *Rhs = Tmp;}/* 插入排序 */void InsertionSort( ElementType A[ ], int
Time of Update: 2017-02-27
題目:將堆棧S1中的元素移至堆棧S2,元素順序不能改變.只能使用一些非數組 變數作為輔助空間.1.用Java實現,首先使用鏈表LinkedList構造棧資料結構.import java.util.LinkedList;public class CharStack { private LinkedList<Character> storage = new LinkedList<Character>(); /** 入棧 */ public void push(char