當前位置:首頁 » 操作系統 » WM模糊演算法

WM模糊演算法

發布時間: 2022-07-29 22:22:40

Ⅰ 字元串匹配中的WM演算法的流程圖

我有
我的郵箱[email protected]聯系我

Ⅱ 簡單數據加密演算法

// ecfileDlg.cpp : implementation file
//

#include "stdafx.h"
#include "ecfile.h"
#include "ecfileDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About

class CAboutDlg : public CDialog
{
public:
CAboutDlg();

// Dialog Data
//{{AFX_DATA(CAboutDlg)
enum ;
//}}AFX_DATA

// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL

// Implementation
protected:
//{{AFX_MSG(CAboutDlg)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
// No message handlers
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CEcfileDlg dialog

CEcfileDlg::CEcfileDlg(CWnd* pParent /*=NULL*/)
: CDialog(CEcfileDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CEcfileDlg)
m_path = _T("");
m_pass = _T("");
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CEcfileDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CEcfileDlg)
DDX_Text(pDX, IDC_PASSWORD, m_path);
DDX_Text(pDX, IDC_PASS1, m_pass);
//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CEcfileDlg, CDialog)
//{{AFX_MSG_MAP(CEcfileDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_E, OnE)
ON_BN_CLICKED(IDC_D, OnD)
ON_BN_CLICKED(IDC_BROW, OnBrow)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()

BOOL CEcfileDlg::OnInitDialog()
{
CDialog::OnInitDialog();

ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}

SetIcon(m_hIcon, TRUE);
SetIcon(m_hIcon, FALSE);

return TRUE;
}

void CEcfileDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}

void CEcfileDlg::OnPaint()
{
CDialog::OnPaint();
}

HCURSOR CEcfileDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}

void CEcfileDlg::OnE()
{
UpdateData(TRUE);
if(m_path == "")
{
AfxMessageBox("怎麼沒有選擇要加密的文件就開始加密啊?");
return;
}

UpdateData(TRUE);
if(m_pass == "")
{
AfxMessageBox("沒有寫上密碼");
return;
}

if(ecfile(m_path))
{
MessageBox("加密成功了已經");
}
else
{
MessageBox("沒加密成功");
}
}

void CEcfileDlg::OnD()
{
UpdateData(TRUE);
if(m_path == "")
{
AfxMessageBox("怎麼沒有選擇要加密的文件就開始解密啊?");
return;
}

UpdateData(TRUE);
if(m_pass == "")
{
AfxMessageBox("沒有寫上密碼");
return;
}

if(dcfile(m_path))
{
MessageBox("解密成功了");
}
else
{
MessageBox("解密失敗了");
}
}

void CEcfileDlg::OnBrow()
{
CFileDialog dlg(TRUE);
if(dlg.DoModal() == IDOK)
{
m_path = dlg.GetPathName();
UpdateData(FALSE);
}
else
{
return;
}
}

//給文件加密的函數
BOOL CEcfileDlg::ecfile(LPCTSTR fpath)
{
char *data;
CFile *file;
DWORD flen;

m_password = epass();

file = new CFile;
if ( !file->Open(fpath, CFile::shareDenyNone|CFile::modeReadWrite))
{
return FALSE;
}

flen = file->GetLength();
data = new char[(int)flen];

file->SeekToBegin();
file->Read(data, flen);

for(int i=0; i<(int)flen; i++)
{
data[i] ^= m_password;
data[i] ^= flen;
}

file->SeekToBegin();
file->Write(data, flen);
delete[] data;

//添加密碼驗證信息
char cpass[5] = "love";
for(int j=0; j<5; j++)
{
cpass[j] ^= m_password;
}
file->SeekToEnd();
file->Write(&cpass, 5);
file->Close();
delete file;

return TRUE;
}

//給文件解密的函數
BOOL CEcfileDlg::dcfile(LPCTSTR fpath)
{
char *data;
CFile *file;
DWORD flen;
char love[5];

file = new CFile;
if( !file->Open(fpath, CFile::shareDenyNone|CFile::modeReadWrite))
{
return FALSE;
}

flen = file->GetLength();
data = new char[(int)flen];

//檢驗密碼是不是正確
file->Seek(-5, CFile::end);
file->Read(&love, 5);

m_password = epass();

for(int i=0; i<5; i++)
{
love[i] ^= m_password;
}

if(strcmp(love, "love")!=0)
{
return FALSE;
}

//解密
file->SeekToBegin();
file->Read(data, flen);

for(int j=0; j<(int)flen; j++)
{
data[j] ^= m_password;
data[j] ^= (flen-5);
}
file->SeekToBegin();
file->Write(data, flen);
file->SetLength(flen-5);
file->Close();

delete[] data;
delete file;
return TRUE;
}

//獲得密碼的函數
__int64 CEcfileDlg::epass()
{
DWORD plen;
char *ppass;
__int64 mc= 8757735233305;
UpdateData(TRUE);

ppass = m_pass.GetBuffer(0);

plen = strlen(ppass);

for(int i=0; i<(int)plen; i++)
{
mc ^= ppass[i]|128;
}
return mc;
}

Ⅲ 神經網路Hopfield模型

一、Hopfield模型概述

1982年,美國加州工學院J.Hopfield發表一篇對人工神經網路研究頗有影響的論文。他提出了一種具有相互連接的反饋型人工神經網路模型——Hopfield人工神經網路。

Hopfield人工神經網路是一種反饋網路(Recurrent Network),又稱自聯想記憶網路。其目的是為了設計一個網路,存儲一組平衡點,使得當給網路一組初始值時,網路通過自行運行而最終收斂到所存儲的某個平衡點上。

Hopfield網路是單層對稱全反饋網路,根據其激活函數的選取不同,可分為離散型Hopfield網路(Discrete Hopfield Neural Network,簡稱 DHNN)和連續型 Hopfield 網路(Continue Hopfield Neural Network,簡稱CHNN)。離散型Hopfield網路的激活函數為二值型階躍函數,主要用於聯想記憶、模式分類、模式識別。這個軟體為離散型Hopfield網路的設計、應用。

二、Hopfield模型原理

離散型Hopfield網路的設計目的是使任意輸入矢量經過網路循環最終收斂到網路所記憶的某個樣本上。

正交化的權值設計

這一方法的基本思想和出發點是為了滿足下面4個要求:

1)保證系統在非同步工作時的穩定性,即它的權值是對稱的,滿足

wij=wji,i,j=1,2…,N;

2)保證所有要求記憶的穩定平衡點都能收斂到自己;

3)使偽穩定點的數目盡可能地少;

4)使穩定點的吸引力盡可能地大。

正交化權值的計算公式推導如下:

1)已知有P個需要存儲的穩定平衡點x1,x2…,xP-1,xP,xp∈RN,計算N×(P-1)階矩陣A∈RN×(P-1)

A=(x1-xPx2-xP…xP-1-xP)T

2)對A做奇異值分解

A=USVT

U=(u1u2…uN),

V=(υ1υ2…υP-1),

中國礦產資源評價新技術與評價新模型

Σ=diαg(λ1,λ2,…,λK),O為零矩陣。

K維空間為N維空間的子空間,它由K個獨立的基組成:

K=rαnk(A),

設{u1u2…uK}為A的正交基,而{uK+1uK+2…uN}為N維空間的補充正交基。下面利用U矩陣來設計權值。

3)構造

中國礦產資源評價新技術與評價新模型

總的連接權矩陣為:

Wt=Wp-T·Wm

其中,T為大於-1的參數,預設值為10。

Wp和Wm均滿足對稱條件,即

(wp)ij=(wp)ji

(wm)ij=(wm)ji

因而Wt中分量也滿足對稱條件。這就保證了系統在非同步時能夠收斂並且不會出現極限環。

4)網路的偏差構造為

bt=xP-Wt·xP

下面推導記憶樣本能夠收斂到自己的有效性。

(1)對於輸入樣本中的任意目標矢量xp,p=1,2,…,P,因為(xp-xP)是A中的一個矢量,它屬於A的秩所定義的K個基空間的矢量,所以必存在系數α1,α2,…,αK,使

xp-xP1u12u2+…+αKuK

xp1u12u2+…+αKuK+xP

對於U中任意一個ui,有

中國礦產資源評價新技術與評價新模型

由正交性質可知,上式中

當i=j,

當i≠j,

對於輸入模式xi,其網路輸出為

yi=sgn(Wtxi+bt)

=sgn(Wpxi-T·Wmxi+xP-WpxP+T·WmxP)

=sgn[Wp(xi-xP)-T·Wm(xi-xP)+xP]

=sgn[(Wp-T·Wm)(xi-xP)+xP]

=sgn[Wt(xi-xP)+xP]

=sgn[(xi-xP)+xP]

=xi

(2)對於輸入模式xP,其網路輸出為

yP=sgn(WtxP+bt)

=sgn(WtxP+xP-WtxP)

=sgn(xP)

=xP

(3)如果輸入一個不是記憶樣本的x,網路輸出為

y=sgn(Wtx+bt)

=sgn[(Wp-T·Wm)(x-xP)+xP]

=sgn[Wt(x-xP)+xP]。

因為x不是已學習過的記憶樣本,x-xP不是A中的矢量,則必然有

Wt(x-xP)≠x-xP

並且再設計過程中可以通過調節Wt=Wp-T·Wm中的參數T的大小來控制(x-xP)與xP的符號,以保證輸入矢量x與記憶樣本之間存在足夠的大小余額,從而使sgn(Wtx+bt)≠x,使x不能收斂到自身。

用輸入模式給出一組目標平衡點,函數HopfieldDesign( )可以設計出 Hopfield 網路的權值和偏差,保證網路對給定的目標矢量能收斂到穩定的平衡點。

設計好網路後,可以應用函數HopfieldSimu( ),對輸入矢量進行分類,這些輸入矢量將趨近目標平衡點,最終找到他們的目標矢量,作為對輸入矢量進行分類。

三、總體演算法

1.Hopfield網路權值W[N][N]、偏差b[N]設計總體演算法

應用正交化權值設計方法,設計Hopfield網路;

根據給定的目標矢量設計產生權值W[N][N],偏差b[N];

使Hopfield網路的穩定輸出矢量與給定的目標矢量一致。

1)輸入P個輸入模式X=(x[1],x[2],…,x[P-1],x[P])

輸入參數,包括T、h;

2)由X[N][P]構造A[N][P-1]=(x[1]-x[P],x[2]-x[P],…,x[P-1]-x[P]);

3)對A[N][P-1]作奇異值分解A=USVT

4)求A[N][P-1]的秩rank;

5)由U=(u[1],u[2],…,u[K])構造Wp[N][N];

6)由U=(u[K+1],…,u[N])構造Wm[N][N];

7)構造Wt[N][N]=Wp[N][N]-T*Wm[N][N];

8)構造bt[N]=X[N][P]-Wt[N][N]*X[N][P];

9)構造W[N][N](9~13),

構造W1[N][N]=h*Wt[N][N];

10)求W1[N][N]的特徵值矩陣Val[N][N](對角線元素為特徵值,其餘為0),特徵向量矩陣Vec[N][N];

11)求Eval[N][N]=diag{exp[diag(Val)]}[N][N];

12)求Vec[N][N]的逆Invec[N][N];

13)構造W[N][N]=Vec[N][N]*Eval[N][N]*Invec[N][N];

14)構造b[N],(14~15),

C1=exp(h)-1,

C2=-(exp(-T*h)-1)/T;

15)構造

中國礦產資源評價新技術與評價新模型

Uˊ——U的轉置;

16)輸出W[N][N],b[N];

17)結束。

2.Hopfield網路預測應用總體演算法

Hopfield網路由一層N個斜坡函數神經元組成。

應用正交化權值設計方法,設計Hopfield網路。

根據給定的目標矢量設計產生權值W[N][N],偏差b[N]。

初始輸出為X[N][P],

計算X[N][P]=f(W[N][N]*X[N][P]+b[N]),

進行T次迭代,

返回最終輸出X[N][P],可以看作初始輸出的分類。

3.斜坡函數

中國礦產資源評價新技術與評價新模型

輸出范圍[-1,1]。

四、數據流圖

Hopfield網數據流圖見附圖3。

五、調用函數說明

1.一般實矩陣奇異值分解

(1)功能

用豪斯荷爾德(Householder)變換及變形QR演算法對一般實矩陣進行奇異值分解。

(2)方法說明

設A為m×n的實矩陣,則存在一個m×m的列正交矩陣U和n×n的列正交矩陣V,使

中國礦產資源評價新技術與評價新模型

成立。其中

Σ=diag(σ0,σ1,…σp)p⩽min(m,n)-1,

且σ0≥σ1≥…≥σp>0,

上式稱為實矩陣A的奇異值分解式,σi(i=0,1,…,p)稱為A的奇異值。

奇異值分解分兩大步:

第一步:用豪斯荷爾德變換將A約化為雙對角線矩陣。即

中國礦產資源評價新技術與評價新模型

其中

中國礦產資源評價新技術與評價新模型

中的每一個變換Uj(j=0,1,…,k-1)將A中的第j列主對角線以下的元素變為0,而

中的每一個變換Vj(j=0,1,…,l-1)將A中的第j行主對角線緊鄰的右次對角線元素右邊的元素變為0。]]

j具有如下形式:

中國礦產資源評價新技術與評價新模型

其中ρ為一個比例因子,以避免計算過程中的溢出現象與誤差的累積,Vj是一個列向量。即

Vj=(υ0,υ1,…,υn-1),

中國礦產資源評價新技術與評價新模型

其中

中國礦產資源評價新技術與評價新模型

第二步:用變形的QR演算法進行迭代,計算所有的奇異值。即:用一系列的平面旋轉變換對雙對角線矩陣B逐步變換成對角矩陣。

在每一次的迭代中,用變換

中國礦產資源評價新技術與評價新模型

其中變換

將B中第j列主對角線下的一個非0元素變為0,同時在第j行的次對角線元素的右邊出現一個非0元素;而變換Vj,j+1將第j-1行的次對角線元素右邊的一個0元素變為0,同時在第j列的主對角線元素的下方出現一個非0元素。由此可知,經過一次迭代(j=0,1,…,p-1)後,B′仍為雙對角線矩陣。但隨著迭代的進行。最後收斂為對角矩陣,其對角線上的元素為奇異值。

在每次迭代時,經過初始化變換V01後,將在第0列的主對角線下方出現一個非0元素。在變換V01中,選擇位移植u的計算公式如下:

中國礦產資源評價新技術與評價新模型

最後還需要對奇異值按非遞增次序進行排列。

在上述變換過程中,若對於某個次對角線元素ej滿足

|ej|⩽ε(|sj+1|+|sj|)

則可以認為ej為0。

若對角線元素sj滿足

|sj|⩽ε(|ej-1|+|ej|)

則可以認為sj為0(即為0奇異值)。其中ε為給定的精度要求。

(3)調用說明

int bmuav(double*a,int m,int n,double*u,double*v,double eps,int ka),

本函數返回一個整型標志值,若返回的標志值小於0,則表示出現了迭代60次還未求得某個奇異值的情況。此時,矩陣的分解式為UAVT;若返回的標志值大於0,則表示正常返回。

形參說明:

a——指向雙精度實型數組的指針,體積為m×n。存放m×n的實矩陣A;返回時,其對角線給出奇異值(以非遞增次序排列),其餘元素為0;

m——整型變數,實矩陣A的行數;

n——整型變數,實矩陣A的列數;

u——指向雙精度實型數組的指針,體積為m×m。返回時存放左奇異向量U;

υ——指向雙精度實型數組的指針,體積為n×n。返回時存放右奇異向量VT

esp——雙精度實型變數,給定的精度要求;

ka——整型變數,其值為max(m,n)+1。

2.求實對稱矩陣特徵值和特徵向量的雅可比過關法

(1)功能

用雅可比(Jacobi)方法求實對稱矩陣的全部特徵值與相應的特徵向量。

(2)方法說明

雅可比方法的基本思想如下。

設n階矩陣A為對稱矩陣。在n階對稱矩陣A的非對角線元素中選取一個絕對值最大的元素,設為apq。利用平面旋轉變換矩陣R0(p,q,θ)對A進行正交相似變換:

A1=R0(p,q,θ)TA,

其中R0(p,q,θ)的元素為

rpp=cosθ,rqq=cosθ,rpq=sinθ,

rqp=sinθ,rij=0,i,j≠p,q。

如果按下式確定角度θ,

中國礦產資源評價新技術與評價新模型

則對稱矩陣A經上述變換後,其非對角線元素的平方和將減少

,對角線元素的平方和增加

,而矩陣中所有元素的平方和保持不變。由此可知,對稱矩陣A每次經過一次變換,其非對角線元素的平方和「向零接近一步」。因此,只要反復進行上述變換,就可以逐步將矩陣A變為對角矩陣。對角矩陣中對角線上的元素λ0,λ1,…,λn-1即為特徵值,而每一步中的平面旋轉矩陣的乘積的第i列(i=0,1,…,n-1)即為與λi相應的特徵向量。

綜上所述,用雅可比方法求n階對稱矩陣A的特徵值及相應特徵向量的步驟如下:

1)令S=In(In為單位矩陣);

2)在A中選取非對角線元素中絕對值最大者,設為apq

3)若|apq|<ε,則迭代過程結束。此時對角線元素aii(i=0,1,…,n-1)即為特徵值λi,矩陣S的第i列為與λi相應的特徵向量。否則,繼續下一步;

4)計算平面旋轉矩陣的元素及其變換後的矩陣A1的元素。其計算公式如下

中國礦產資源評價新技術與評價新模型

5)S=S·R(p,q,θ),轉(2)。

在選取非對角線上的絕對值最大的元素時用如下方法:

首先計算實對稱矩陣A的非對角線元素的平方和的平方根

中國礦產資源評價新技術與評價新模型

然後設置關口υ10/n,在非對角線元素中按行掃描選取第一個絕對值大於或等於υ1的元素αpq進行平面旋轉變換,直到所有非對角線元素的絕對值均小於υ1為止。再設關口υ21/n,重復這個過程。以此類推,這個過程一直作用到對於某個υk<ε為止。

(3)調用說明

void cjcbj(double*a,int n,double*v,double eps)。

形參說明:

a——指向雙精度實型數組的指針,體積為n×n,存放n階實對稱矩陣A;返回時,其對角線存放n個特徵值;

n——整型變數,實矩陣A的階數;

υ——指向雙精度實型數組的指針,體積為n×n,返回特徵向量,其中第i列為與λi(即返回的αii,i=0,1,……,n-1)對應的特徵向量;

esp——雙精度實型變數。給定的精度要求。

3.矩陣求逆

(1)功能

用全選主元高斯-約當(Gauss-Jordan)消去法求n階實矩陣A的逆矩陣。

(2)方法說明

高斯-約當法(全選主元)求逆的步驟如下:

首先,對於k從0到n-1做如下幾步:

1)從第k行、第k列開始的右下角子陣中選取絕對值最大的元素,並記住此元素所在的行號和列號,再通過行交換和列交換將它交換到主元素位置上,這一步稱為全選主元;

2)

3)

,i,j=0,1,…,n-1(i,j≠k);

4)αij-

,i,j=0,1,…,n-1(i,j≠k);

5)-

,i,j=0,1,…,n-1(i≠k);

最後,根據在全選主元過程中所記錄的行、列交換的信息進行恢復,恢復原則如下:在全選主元過程中,先交換的行、列後進行恢復;原來的行(列)交換用列(行)交換來恢復。

圖8-4 東昆侖—柴北緣地區基於HOPFIELD模型的銅礦分類結果圖

(3)調用說明

int brinv(double*a,int n)。

本函數返回一個整型標志位。若返回的標志位為0,則表示矩陣A奇異,還輸出信息「err**not inv」;若返回的標志位不為0,則表示正常返回。

形參說明:

a——指向雙精度實型數組的指針,體積為n×n。存放原矩陣A;返回時,存放其逆矩陣A-1

n——整型變數,矩陣的階數。

六、實例

實例:柴北緣—東昆侖地區銅礦分類預測。

選取8種因素,分別是重砂異常存在標志、水化異常存在標志、化探異常峰值、地質圖熵值、Ms存在標志、Gs存在標志、Shdadlie到區的距離、構造線線密度。

構置原始變數,並根據原始數據構造預測模型。

HOPFIELD模型參數設置:訓練模式維數8,預測樣本個數774,參數個數8,迭代次數330。

結果分44類(圖8-4,表8-5)。

表8-5 原始數據表及分類結果(部分)

續表

Ⅳ 求救,論文高手請不吝賜教

模擬退火是一種優化演算法,它本身是不能獨立存在的,需要有一個應用場合,其中溫度就是模擬退火需要優化的參數,如果它應用到了聚類分析中,那麼就是說聚類分析中有某個或者某幾個參數需要優化,而這個參數,或者參數集就是溫度所代表的。它可以是某項指標,某項關聯度,某個距離等等

Simulate Anneal Arithmetic (SAA,模擬退火演算法)
模擬退火演算法
模擬退火演算法來源於固體退火原理,將固體加溫至充分高,再讓其徐徐冷卻,加溫時,固體內部粒子隨溫升變為無序狀,內能增大,而徐徐冷卻時粒子漸趨有序,在每個溫度都達到平衡態,最後在常溫時達到基態,內能減為最小。根據Metropolis准則,粒子在溫度T時趨於平衡的概率為e-ΔE/(kT),其中E為溫度T時的內能,ΔE為其改變數,k為Boltzmann常數。用固體退火模擬組合優化問題,將內能E模擬為目標函數值f,溫度T演化成控制參數t,即得到解組合優化問題的模擬退火演算法:由初始解i和控制參數初值t開始,對當前解重復「產生新解→計算目標函數差→接受或舍棄」的迭代,並逐步衰減t值,演算法終止時的當前解即為所得近似最優解,這是基於蒙特卡羅迭代求解法的一種啟發式隨機搜索過程。退火過程由冷卻進度表(Cooling Schele)控制,包括控制參數的初值t及其衰減因子Δt、每個t值時的迭代次數L和停止條件S。
1 . 模擬退火演算法的模型
模擬退火演算法可以分解為解空間、目標函數和初始解三部分。
模擬退火的基本思想:
(1) 初始化:初始溫度T(充分大),初始解狀態S(是演算法迭代的起點), 每個T值的迭代次數L
(2) 對k=1,……,L做第(3)至第6步:
(3) 產生新解S′
(4) 計算增量Δt′=C(S′)-C(S),其中C(S)為評價函數
(5) 若Δt′<0則接受S′作為新的當前解,否則以概率exp(-Δt′/T)接受S′作為新的當前解.
(6) 如果滿足終止條件則輸出當前解作為最優解,結束程序。
終止條件通常取為連續若干個新解都沒有被接受時終止演算法。
(7) T逐漸減少,且T->0,然後轉第2步。
演算法對應動態演示圖:
模擬退火演算法新解的產生和接受可分為如下四個步驟:
第一步是由一個產生函數從當前解產生一個位於解空間的新解;為便於後續的計算和接受,減少演算法耗時,通常選擇由當前新解經過簡單地變換即可產生新解的方法,如對構成新解的全部或部分元素進行置換、互換等,注意到產生新解的變換方法決定了當前新解的鄰域結構,因而對冷卻進度表的選取有一定的影響。
第二步是計算與新解所對應的目標函數差。因為目標函數差僅由變換部分產生,所以目標函數差的計算最好按增量計算。事實表明,對大多數應用而言,這是計算目標函數差的最快方法。
第三步是判斷新解是否被接受,判斷的依據是一個接受准則,最常用的接受准則是Metropo1is准則: 若Δt′<0則接受S′作為新的當前解S,否則以概率exp(-Δt′/T)接受S′作為新的當前解S。
第四步是當新解被確定接受時,用新解代替當前解,這只需將當前解中對應於產生新解時的變換部分予以實現,同時修正目標函數值即可。此時,當前解實現了一次迭代。可在此基礎上開始下一輪試驗。而當新解被判定為舍棄時,則在原當前解的基礎上繼續下一輪試驗。
模擬退火演算法與初始值無關,演算法求得的解與初始解狀態S(是演算法迭代的起點)無關;模擬退火演算法具有漸近收斂性,已在理論上被證明是一種以概率l 收斂於全局最優解的全局優化演算法;模擬退火演算法具有並行性。
2 模擬退火演算法的簡單應用
作為模擬退火演算法應用,討論貨郎擔問題(Travelling Salesman Problem,簡記為TSP):設有n個城市,用數碼1,…,n代表。城市i和城市j之間的距離為d(i,j) i, j=1,…,n.TSP問題是要找遍訪每個域市恰好一次的一條迴路,且其路徑總長度為最短.。
求解TSP的模擬退火演算法模型可描述如下:
解空間 解空間S是遍訪每個城市恰好一次的所有迴路,是{1,……,n}的所有循環排列的集合,S中的成員記為(w1,w2 ,……,wn),並記wn+1= w1。初始解可選為(1,……,n)
目標函數 此時的目標函數即為訪問所有城市的路徑總長度或稱為代價函數:
我們要求此代價函數的最小值。
新解的產生 隨機產生1和n之間的兩相異數k和m,若k (w1, w2 ,…,wk , wk+1 ,…,wm ,…,wn)
變為:
(w1, w2 ,…,wm , wm-1 ,…,wk+1 , wk ,…,wn).
如果是k>m,則將
(w1, w2 ,…,wk , wk+1 ,…,wm ,…,wn)
變為:
(wm, wm-1 ,…,w1 , wm+1 ,…,wk-1 ,wn , wn-1 ,…,wk).
上述變換方法可簡單說成是「逆轉中間或者逆轉兩端」。
也可以採用其他的變換方法,有些變換有獨特的優越性,有時也將它們交替使用,得到一種更好方法。
代價函數差 設將(w1, w2 ,……,wn)變換為(u1, u2 ,……,un), 則代價函數差為:
根據上述分析,可寫出用模擬退火演算法求解TSP問題的偽程序:
Procere TSPSA:
begin
init-of-T; { T為初始溫度}
S={1,……,n}; {S為初始值}
termination=false;
while termination=false
begin
for i=1 to L do
begin
generate(S′form S); { 從當前迴路S產生新迴路S′}
Δt:=f(S′))-f(S);{f(S)為路徑總長}
IF(Δt<0) OR (EXP(-Δt/T)>Random-of-[0,1])
S=S′;
IF the-halt-condition-is-TRUE THEN
termination=true;
End;
T_lower;
End;
End
模擬退火演算法的應用很廣泛,可以較高的效率求解最大截問題(Max Cut Problem)、0-1背包問題(Zero One Knapsack Problem)、圖著色問題(Graph Colouring Problem)、調度問題(Scheling Problem)等等。
3 模擬退火演算法的參數控制問題
模擬退火演算法的應用很廣泛,可以求解NP完全問題,但其參數難以控制,其主要問題有以下三點:
(1) 溫度T的初始值設置問題。
溫度T的初始值設置是影響模擬退火演算法全局搜索性能的重要因素之一、初始溫度高,則搜索到全局最優解的可能性大,但因此要花費大量的計算時間;反之,則可節約計算時間,但全局搜索性能可能受到影響。實際應用過程中,初始溫度一般需要依據實驗結果進行若干次調整。
(2) 退火速度問題。
模擬退火演算法的全局搜索性能也與退火速度密切相關。一般來說,同一溫度下的「充分」搜索(退火)是相當必要的,但這需要計算時間。實際應用中,要針對具體問題的性質和特徵設置合理的退火平衡條件。
(3) 溫度管理問題。
溫度管理問題也是模擬退火演算法難以處理的問題之一。實際應用中,由於必須考慮計算復雜度的切實可行性等問題,常採用如下所示的降溫方式:
T(t+1)=k×T(t)
式中k為正的略小於1.00的常數,t為降溫的次數

Ⅳ SB與WM和Mid

mid至少得能很方便地使用各種網路功能吧?
收個郵件還打不開附件,想付個款卻連不上網上銀行,想在線看個視頻卻沒有解碼器...那能叫方便嗎?

其實這個界限很模糊的,每個人的要求都不一樣,你自己把握吧。

換句話說,如果你覺得用n97上網很方便,那它就是mid。

Ⅵ dijkstra演算法

[問題分析]
對於一個含有n個頂點和e條邊的圖來說,從某一個頂點Vi到其餘任一頂點Vj的最短路徑,可能是它們之間的邊(Vi,Vj),也可能是經過k個中間頂點和k+1條邊所形成的路徑(1≤k≤n-2)。下面給出解決這個問題的Dijkstra演算法思想。
設圖G用鄰接矩陣的方式存儲在GA中,GA[i,j]=maxint表示Vi,Vj是不關聯的,否則為權值(大於0的實數)。設集合S用來保存已求得最短路徑的終點序號,初始時S=[Vi]表示只有源點,以後每求出一個終點Vj,就把它加入到集合中並作為新考慮的中間頂點。設數組dist[1..n]用來存儲當前求得的最短路徑,初始時Vi,Vj如果是關聯的,則dist[j]等於權值,否則等於maxint,以後隨著新考慮的中間頂點越來越多,dist[j]可能越來越小。再設一個與dist對應的數組path[1..n]用來存放當前最短路徑的邊,初始時為Vi到Vj的邊,如果不存在邊則為空。
執行時,先從S以外的頂點(即待求出最短路徑的終點)所對應的dist數組元素中,找出其值最小的元素(假設為dist[m]),該元素值就是從源點Vi到終點Vm的最短路徑長度,對應的path[m]中的頂點或邊的序列即為最短路徑。接著把Vm並入集合S中,然後以Vm作為新考慮的中間頂點,對S以外的每個頂點Vj,比較dist[m]+GA[m,j]的dist[j]的大小,若前者小,表明加入了新的中間頂點後可以得到更好的方案,即可求得更短的路徑,則用它代替dist[j],同時把Vj或邊(Vm,Vj)並入到path[j]中。重復以上過程n-2次,即可在dist數組中得到從源點到其餘各終點的最段路徑長度,對應的path數組中保存著相應的最段路徑。

下面給出具體的Dijkstra演算法框架(註:為了實現上的方便,用一個一維數組s[1..n]代替集合S,用來保存已求得最短路徑的終點集合,即如果s[j]=0表示頂點Vj不在集合中,反之,s[j]=1表示頂點Vj已在集合中)。
Procere Dijkstra(GA,dist,path,i);
{表示求Vi到圖G中其餘頂點的最短路徑,GA為圖G的鄰接矩陣,dist和path為變數型參數,
其中path的基類型為集合}
Begin
For j:=1 To n Do Begin {初始化}
If j<>i Then s[j]:=0 Else s[j]:=1;
dist[j]:=GA[i,j];
If dist[j]<maxint Then path[j]:=[i]+[j] Else path[j]:=[ ];
End;
For k:=1 To n-2 Do
Begin
w:=maxint;m:=i;
For j:=1 To n Do {求出第k個終點Vm}
If (s[j]=0) and (dist[j]<w) Then Begin m:=j;w:=dist[j]; End;
If m<>i Then s[m]:=1 else exit;
{若條件成立,則把Vm加入到S中,
否則退出循環,因為剩餘的終點,其最短路徑長度均為maxint,無需再計算下去}
For j:=1 To n Do {對s[j]=0的更優元素作必要修改}
If (s[j]=0) and (dist[m]+GA[m,j]<dist[j])
Then Begin Dist[j]:=dist[m]+GA[m,j];path[j]:=path[m]+[j];End;
End;
End;

(1)從一個頂點到其餘各頂點的最短路徑
對於一個含有n個頂點和e條邊的圖來說,從某個頂點vi到其餘任一頂點vj的最短路徑,可能是它們之間的邊(vi,vj),也可能是經過k個中間點和k+1條邊所形成的路徑(1≤k ≤n-2)。
首先來分析Dijkstra的演算法思想
設圖G用鄰接矩陣的方式存儲在GA中,GA[I,j]=maxint表示vi,vj是不關聯的,否則為權值(大於0的實數)。設集合S用來存儲保存已求得最短路徑的終點序號,初始時S=[vi]表示只有源點,以後每求出一個終點vj,就把它加入到集合中並作為新考慮的中間頂點。設數組dist[1..n]用來存儲當前求得的最短路徑,初始時vi,vj如果是關聯的,則dist[j]等於權值,否則等於maxint,以後隨著新考慮的中間頂點越來越多,dist[j]可能越來越小。再設一個與dist對應的數組path[1..n]用來存放當前最短路徑的邊,初始時vi到vj的邊,如果不存在邊則為空。
執行時,先從S以外的頂點(即待求出最短路徑的終點)所對應的dist數組元素中,找出其值最小的元素(假設為dist[m]),該元素值就是從源點vi到終點vm的最短路徑長度,對應的path[m]中的頂點或邊的序列即為最短路徑。接著把vm並入集合S中,然後以vm作為新考慮的中間頂點,對S以外的每個頂點vj,比較dist[m]+GA[i,j]與dist[j]的大小,若前者小,表明加入了新的中間頂點後可以得到更好的方案,即可求得更短的路徑,則用它代替dist[j],同時把vj或邊(vm,vj)並入到path[j]中。重復以上過程n-2次,即可在dist數組中得到從源點到其餘個終點的最短路徑長度,對應的path數組中保存著相應的最短路徑。
為了實現上的方便,用一個一維數組s[1..n]代替集合s,用來保存已求得最短路徑的終點集合,即如果s[j]=0表示頂點vj不在集合中,反之,s[j]表示頂點vj已在集合中)。

Procere dijkstra (GA,dist path,I)
begin
for j:= 1 to n do begin
if j<>I then s[j]:=0;{j不在集合中} else s[j]:=1;{j在集合中};
dist[j]:=GA[I,J];
IF dist [j]<maxint {maxint為假設的一個足夠大的數}
Then path [j]:=[I]+[j]
Else path[j]:=[ ];
End;
For k:= 1 to n-1 do begin w:=maxint;m:=I;
For j:= 1 to n do{求出第k個終點Vm}
if (s[j]=0)and(dist[j]<w) then begin m:=j;w:=dist[j];end;
If m<>I then s[m]:=1 else exit;{若條件成立,則把Vm加入到s中,否則退出循環,因為
剩餘的終點,其最短路徑長度均為maxint,無需再計算下去}
for j:=1 to n do {對s[j]=0的更優元素作必要修改}
if (s[j]=0)and (dist[m]+GA[m,j]<dist[j])
then begin
dist[j]:=dist[m]+GA[m,j];
path[j]:=path[m]+[j];
End;
End;
End;

用集合的思想:

for k:=1 to n-1 do
begin
wm:=max;j:=0;
for i:=1 to n do
if not(i in s)and(dist[i]<wm) then begin j:=i;wm:=dist[i];end;
s:=s+[j];
for i:=1 to n do
if not(i in s)and(dist[j]+cost[j,i]<dist[i]) then
begin dist[i]:=dist[j]+cost[j,i];path[i]:=path[j]+char(48+i);end;
end;

Ⅶ ac,wm,mwm多模演算法哪個好

給你兩個方向,如果你每次只查找一個字元串,就去看看單模匹配演算法,比如KMP 如果每次查找多個字元串,多模匹配演算法,比如AC演算法,WM演算法

Ⅷ oracle wm concat 模糊查詢

應該是字元的問題,你可以把裡面欄位的值復制出來做條件試試。

Ⅸ wm 是什麼音頻格式為什麼文件會那麼小而音質卻不算差

應該是WMA吧,WMA就是Windows Media Audio編碼後的文件格式,由微軟開發,WMA針對的不是單機市場,是網路!競爭對手就是網路媒體市場中著名的Real Networks。微軟聲稱,在只有64kbps的碼率情況下,WMA可以達到接近CD的音質。和以往的編碼不同,WMA支持防復制功能,她支持通過Windows Media Rights Manager 加入保護,可以限制播放時間和播放次數甚至於播放的機器等等。WMA支持流技術,即一邊讀一邊播放,因此WMA可以很輕松的實現在線廣播,由於是微軟的傑作,因此,微軟在Windows中加入了對WMA的支持,WMA有著優秀的技術特徵,在微軟的大力推廣下,這種格式被越來越多的人所接受

熱點內容
入侵php 發布:2025-01-18 19:01:09 瀏覽:801
存儲的下標范圍 發布:2025-01-18 19:00:57 瀏覽:337
文件夾怎麼打開 發布:2025-01-18 18:47:07 瀏覽:296
杉德卡卡號和密碼看哪裡 發布:2025-01-18 18:43:27 瀏覽:712
android返回退出 發布:2025-01-18 18:43:26 瀏覽:601
linux採集視頻 發布:2025-01-18 18:38:38 瀏覽:638
差異度演算法 發布:2025-01-18 18:34:27 瀏覽:698
電腦全套配置有哪些 發布:2025-01-18 18:32:39 瀏覽:145
新項目源碼 發布:2025-01-18 18:14:48 瀏覽:517
腳本設計圖 發布:2025-01-18 18:06:17 瀏覽:601