㈠ 求2-Hop標簽演算法的源程序,最好C語言的,謝謝。
2-Hop的基本思想是通過選擇部分頂點作為中心點來覆蓋連通路徑,每個中心點wi被賦予一對集合In和Out,分別記錄能夠到達wi的圖中部分頂點和wi能夠到達的圖中的部分頂點。這樣任意兩個頂點u和v之間的可達關系可表示為:頂點u是否可以通過某個中心頂點wi到達頂點v。
㈡ 在二進制文件查看下,如何辨別MP3是VBR格式的
如圖所示:
1、MP3丟棄掉脈沖編碼調制(PCM)音頻數據中對人類聽覺不重要的數據(類似於JPEG是一個有損圖像壓縮),從而達到了小得多的文件大小;
2、VBR可以用realone10播放,如果不能播放可在線下載解碼文件。所謂RMVB格式,是在流媒體的RM影片格式上升級延伸而來。VB即VBR,是Variable Bit Rate(可改變之比特率)的英文縮寫。
在播放以往常見的RM格式電影時,可以在播放器左下角看到225Kbps字樣,這就是比特率。影片的靜止畫面和運動畫面對壓縮采樣率的要求是不同的,如果始終保持固定的比特率,會對影片質量造成浪費。
(2)求2hop標簽演算法的源碼擴展閱讀:
MP3音頻可以按照不同的位速進行壓縮,提供了在數據大小和聲音質量之間進行權衡的一個范圍,MP3格式使用了混合的轉換機制將時域信號轉換成頻域信號;32波段多相積分濾波器(PQF);
36或者12 tap 改良離散餘弦濾波器(MDCT);每個子波段大小可以在0...1和2...31之間獨立選擇;MP3不僅有廣泛的用戶端軟體支持,還有很多的硬體支持比如攜帶型媒體播放器(指MP3播放器)DVD和CD播放器。
㈢ 用RSA加密演算法給「hoponelee」加密,P、Q自定
RSA
開放分類: 網路、電腦、計算機、安全、演算法
RSA演算法是第一個能同時用於加密和數字簽名的演算法,也易於理解和操作。 RSA是被研究得最廣泛的公鑰演算法,從提出到現在已近二十年,經歷了各種攻擊的考驗,逐漸為人們接受,普遍認為是目前最優秀的公鑰方案之一。RSA的安全性依賴於大數的因子分解,但並沒有從理論上證明破譯RSA的難度與大數分解難度等價。即RSA的重大缺陷是無法從理論上把握它的保密性能如何,而且密碼學界多數人士傾向於因子分解不是 NPC問題。RSA的缺點主要有:A)產生密鑰很麻煩,受到素數產生技術的限制,因而難以做到一次一密。B)分組長度太大,為保證安全性,n 至少也要 600 bits以上,使運算代價很高,尤其是速度較慢,較對稱密碼演算法慢幾個數量級;且隨著大數分解技術的發展,這個長度還在增加,不利於數據格式的標准化。目前,SET(Secure Electronic Transaction)協議中要求CA採用2048比特長的密鑰,其他實體使用1024比特的密鑰。
這種演算法1978年就出現了,它是第一個既能用於數據加密也能用於數字簽名的演算法。它易於理解和操作,也很流行。演算法的名字以發明者的名字命名:Ron Rivest, AdiShamir 和Leonard Adleman。但RSA的安全性一直未能得到理論上的證明。
RSA的安全性依賴於大數分解。公鑰和私鑰都是兩個大素數( 大於 100個十進制位)的函數。據猜測,從一個密鑰和密文推斷出明文的難度等同於分解兩個大素數的積。
密鑰對的產生。選擇兩個大素數,p 和q 。計算:
n = p * q
然後隨機選擇加密密鑰e,要求 e 和 ( p - 1 ) * ( q - 1 ) 互質。最後,利用Euclid 演算法計算解密密鑰d, 滿足
e * d = 1 ( mod ( p - 1 ) * ( q - 1 ) )
其中n和d也要互質。數e和n是公鑰,d是私鑰。兩個素數p和q不再需要,應該丟棄,不要讓任何人知道。
加密信息 m(二進製表示)時,首先把m分成等長數據塊 m1 ,m2,..., mi ,塊長s,其中 2^s <= n, s 盡可能的大。對應的密文是:
ci = mi^e ( mod n ) ( a )
解密時作如下計算:
mi = ci^d ( mod n ) ( b )
RSA 可用於數字簽名,方案是用 ( a ) 式簽名, ( b )式驗證。具體操作時考慮到安全性和 m信息量較大等因素,一般是先作 HASH 運算。
RSA 的安全性。
RSA的安全性依賴於大數分解,但是否等同於大數分解一直未能得到理論上的證明,因為沒有證明破解RSA就一定需要作大數分解。假設存在一種無須分解大數的演算法,那它肯定可以修改成為大數分解演算法。目前, RSA的一些變種演算法已被證明等價於大數分解。不管怎樣,分解n是最顯然的攻擊方法。現在,人們已能分解140多個十進制位的大素數。因此,模數n必須選大一些,因具體適用情況而定。
RSA的速度。
由於進行的都是大數計算,使得RSA最快的情況也比DES慢上100倍,無論是軟體還是硬體實現。速度一直是RSA的缺陷。一般來說只用於少量數據加密。
RSA的選擇密文攻擊。
RSA在選擇密文攻擊面前很脆弱。一般攻擊者是將某一信息作一下偽裝(Blind),讓擁有私鑰的實體簽署。然後,經過計算就可得到它所想要的信息。實際上,攻擊利用的都是同一個弱點,即存在這樣一個事實:乘冪保留了輸入的乘法結構:
( XM )^d = X^d *M^d mod n
前面已經提到,這個固有的問題來自於公鑰密碼系統的最有用的特徵--每個人都能使用公鑰。但從演算法上無法解決這一問題,主要措施有兩條:一條是採用好的公鑰協議,保證工作過程中實體不對其他實體任意產生的信息解密,不對自己一無所知的信息簽名;另一條是決不對陌生人送來的隨機文檔簽名,簽名時首先使用 One-Way Hash Function對文檔作HASH處理,或同時使用不同的簽名演算法。在中提到了幾種不同類型的攻擊方法。
RSA的公共模數攻擊。
若系統中共有一個模數,只是不同的人擁有不同的e和d,系統將是危險的。最普遍的情況是同一信息用不同的公鑰加密,這些公鑰共模而且互質,那末該信息無需私鑰就可得到恢復。設P為信息明文,兩個加密密鑰為e1和e2,公共模數是n,則:
C1 = P^e1 mod n
C2 = P^e2 mod n
密碼分析者知道n、e1、e2、C1和C2,就能得到P。
因為e1和e2互質,故用Euclidean演算法能找到r和s,滿足:
r * e1 + s * e2 = 1
假設r為負數,需再用Euclidean演算法計算C1^(-1),則
( C1^(-1) )^(-r) * C2^s = P mod n
另外,還有其它幾種利用公共模數攻擊的方法。總之,如果知道給定模數的一對e和d,一是有利於攻擊者分解模數,一是有利於攻擊者計算出其它成對的e』和d』,而無需分解模數。解決辦法只有一個,那就是不要共享模數n。
RSA的小指數攻擊。 有一種提高RSA速度的建議是使公鑰e取較小的值,這樣會使加密變得易於實現,速度有所提高。但這樣作是不安全的,對付辦法就是e和d都取較大的值。
參考資料:http://ke..com/view/7520.htm
㈣ 求2-Hop標簽演算法的源碼
㈤ 寫出RIP路由協議使用距離向量路由演算法。(2求路由器A更新後的路由表,根據演算法詳述路由表項的更新過程。
1 距離向量路由演算法(Bellman-Ford Routing Algorithm),也叫做最大流量演演算法(Ford-Fulkerson Algorithm),其被距離向量協議作為一個演算法,如RIP, BGP, ISO IDRP, NOVELL IPX。使用這個演算法的路由器必須掌握這個距離表(它是一個一維排列-「一個向量」),它告訴在網路中每個節點的最遠和最近距離。
2 DEST COST NEXTHOP
A 0 -
B 3 B
C 4 B
D 5 B
㈥ Dijkstra演算法算最短路徑
////////////////////////////////////////////////////////////
// Graph.h
#pragma once
#define maxPoint 100
class CGraph
{
public:
CGraph(void);
~CGraph(void);
bool SetGraph( double g[maxPoint][maxPoint] , int startPoint , int size );
bool Dijkstra();
void Display();
int GetStartPoint();
double GetBestWay( int dest , int path[] , int &pathLen );
private:
//標志當前圖是否已經求解
bool solved;
//當前圖布局
double graph[maxPoint][maxPoint];
//地圖大小
int size;
//起點
int startPoint;
//當前圖的解
double dist[maxPoint];
int prev[maxPoint];
};
////////////////////////////////////////////////////////////
// Graph.cpp
#include 'StdAfx.h'
#include '.\graph.h'
CGraph::CGraph(void)
{
for( int i = 0 ; i < maxPoint ; i++ )
{
for( int j = 0 ; j < maxPoint ; j++ )
graph[i][j] = -1;
}
startPoint = -1;
size = -1;
//當前圖還沒有求解
solved = false;
}
CGraph::~CGraph(void)
{
}
//
//
bool CGraph::SetGraph( double g[maxPoint][maxPoint] , int startPoint , int size )
{
for( int i = 0 ; i < size ; i++ )
{
for( int j = 0 ; j < size ; j++ )
graph[i][j] = g[i][j];
}
this->startPoint = startPoint;
this->size = size;
solved = false;
Dijkstra();
return true;
}
//
//
bool CGraph::Dijkstra()
{
bool s[maxPoint];
for( int j = 0 ; j < size ; j++ )
{
dist[j] = graph[startPoint][j];
s[j] = false;
//dist[i]<0,表示沒有路徑連接 結點startPoint 與 結點j
if( dist[j] < 0 )
prev[j] = 0;
else
prev[j] = startPoint;
}
//從起點出發
dist[startPoint] = 0;
s[startPoint] = true;
for( int i = 0 ; i < size ; i++ )
{
double temp;
int u = startPoint;
bool flag = false;
for( int j = 0 ; j < size ; j++ )
{
if( !s[j] )
{
//如果不是第一次比較,temp u,都已經賦值,則
if( flag )
{
if( dist[j] > 0 && dist[j] < temp )
{
u = j;
temp = dist[j];
}
}
else
{
u = j;
temp = dist[j];
flag = true;
}
}
}
s[u] = true;
for( int j = 0 ; j < size ; j++ )
{
if( !s[j] && graph[u][j] > 0 )
{
double newDist = dist[u] + graph[u][j];
if( dist[j] < 0 || newDist < dist[j] )
{
dist[j] = newDist;
prev[j] = u;
}
}
}
}
//標記當前問題已經解決
solved = true;
return true;
}
//
//
void CGraph::Display()
{
printf( '當前地圖的鄰接矩陣\n' );
for( int i = 0 ; i < size ; i++ )
{
for( int j = 0 ; j < size ; j++ )
{
printf( '%5.f' , graph[i][j] );
}
printf( '\n' );
}
}
//
//
double CGraph::GetBestWay( int dest , int path[] , int &pathLen )
{
int p = dest;
int theway[maxPoint];
int len = 0;
while( p != startPoint )
{
theway[len] = p;
p = prev[p];
len++;
}
theway[len] = startPoint;
len++;
for( int i = 0 , j = len - 1 ; i < len ; i++ , j-- )
path[i] = theway[j];
pathLen = len;
return dist[dest];
}
//
//
int CGraph::GetStartPoint()
{
return startPoint;
}
//
////////////////////////////////////////////////////////////
// Dijkstra.cpp : 定義控制台應用程序的入口點。
//
#include 'stdafx.h'
#include 'conio.h'
#include 'Graph.h'
int _tmain(int argc, _TCHAR* argv[])
{
double graph[][maxPoint] =
{
{ 1 , 10 , -1 , 30 , 100 } ,
{ -1 , 0 , 50 , -1 , -1 } ,
{ -1 , -1 , 0 , -1 , 10 } ,
{ -1 , -1 , 20 , 0 , 60 } ,
{ -1 , -1 , -1 , -1 , -1 }
};
int size = 5;
int start = 0;
int dest = 1;
int pathlen;
int path[maxPoint];
double dist;
CGraph g;
g.SetGraph( graph , start , size );
g.Display();
printf( '----------------------------------------\n' );
for( dest = 0 ; dest < size ; dest++ )
{
dist = g.GetBestWay( dest , path , pathlen );
printf( '從 %d 到 %d 的最短路徑長 %.f\n' , g.GetStartPoint() , dest , dist );
printf( '所經結點為:\n' );
for( int i = 0 ; i < pathlen ; i++ )
printf( '%3d' , path[i] );
printf( '\n----------------------------------------\n' );
}
getch();
return 0;
}
////////////////////////////////////////////////////////////
// 程序說明:
// 本程序在 VC++.NET 2003 上調試通過
// 首先建立 Win32控制台應用程序,工程名為 Dijkstra
// 工程設置默認
// 添加 一般C++類 CGraph
// 填寫以上內容
㈦ 求hip-hop舞蹈的特色簡介 急急急急··········
基本簡介
Hip-Hop是文化名詞,包括饒舌 (Rap) 打碟 (DJ) 塗鴉 (Graffiti) 街舞 (street dance) 說唱起源於60年代,而作為音樂理解的Hip-Hop則起源於70年代初,它的前身是RAP(有時候會加一點R&B)。這是一種完全自由式即興式的音樂。這種音樂不帶有任何程式化,拘束的成分。在任何時間,任何地點你都可以炫Hip hop 只要你high 。 Hip-Hop從字面上來看,Hip是臀部,Hop是搖擺,加在一起就是輕
扭擺臀,是以前美國的蹦迪(當然不是像咱們,他們是搖擺臀部,咱們是頭-_-)原先指的是雛形階段的街舞(也就是我們以前說的霹靂舞),後來才逐漸發展成一種巨大的概念--我們現在說的Hip-Hop文化還包括了那些寬大的衣服、沉甸甸的純金飾品、平時說起話來就「YoYo?what』s up?men!」的口語習慣--總之就是那種美國貧民街區里黑人的生活方式以及他們的「范兒」。
具體涵蓋范圍
Hip-hop:(廣義)是一種源於街頭的文化、文化現象、文化運動和生活方式。 Hip-hop:(狹義)包括MC、DJ、所有的Street dance(包括:Breakin',HipHop,new Jazz,Poppin',Lockin',House,Krumpin' ,reggae,C-walk等舞蹈統稱hip-hop)和Graffiti(塗鴉)等四個主要方面,街球、beatbox等為補充。
發展歷史
所謂的hip-hop DANCE.正是現在最廣泛流行的一種街舞類型.如
果我們以舞蹈的觀點來看,它可以分成NEW SCHOOL以及OLD SCHOOL兩大類.如何去區分這兩大類型呢?我們可以以年代及動作或是音樂類型來作區分. 其實hip-hop就是各種街舞的總稱 . 事實上,我們所謂的Breaking DANCE或是OLD SCHOOL正也是屬於hip-hop的一種.這種OLD SCHOOL的舞蹈包含著locking(鎖舞).popping(機械舞).breaking(地板舞).wave(電流)這些東西(這種霹靂舞式的舞蹈風格著名的團體是Rock Steady Crew).他起源於美國街頭的舞者的即興舞蹈動作.這些街頭舞者多半是以黑人或是墨西哥人為主.或許正是所謂的"窮人的娛樂",這些流行的街舞多半發源自美國紐約的布魯克林區和洛杉磯的街頭(這一區住的全是一些窮困的黑人或墨西哥人.)這些黑人及墨西哥人的孩子們成天在街上混,跳舞,自然而然的行成各種的派系,也很自然的在他們所跳的舞蹈上發展出不一樣的風格. 而在OLD SCHOOL演變至NEW SCHOOL的關鍵.這可追溯至早期OLD SCHO
OL的音樂,其具有非常快的節拍來匹配這些breaking的動作,而後隨著hip-hop音樂的演進,人們開始了解 breaking並不適合這些NEW SCHOOL hip-hop的音樂(因為所謂NEW SCHOOL的音樂比較慢,如果在這種慢板的hip-hop音樂中作風車或排腿(footwork)之類的動作,會覺得一點爆發力都沒有,甚至失去其舞感.)此時OLD SCHOOL與NEW SCHOOL 的舞蹈就開始分家了,那是在1986年左右早期NEW SCHOOL的舞步非常簡單,如耳熟能詳的 "滑步"(running man) 這在以前MC HAMMER及巴比布朗的video的中均可見到.....或許我們可以稱當時這種"勁爆"的hip-hop舞蹈為FUNKING DANCE.
編輯本段NEW SCHOOL hip-hop
誕生階段
然而以現在的眼光來看這些MC HAMMER及巴比布朗時期所流行的街舞,也漸漸變成了OLD SCHOOL.因為在92年初期時,出現了一個叫做MOP TOP(ElITE FORCE)的黑人舞蹈團體(由Henry Link . Loose Joint . Buddha Stretch組成),他們發展出一種新風格的hip-hop.我稱他為"原地性的hip-hop".他不像MC HAMMER及巴比布朗時期的大動作,勁爆,大范圍式的移動,更沒有霹靂舞中那些在地上類是體操的動作.他獨有風格在於他注重身體的協調性(我們所謂的律動).他重視身體上半身的律動及增加了許多手部的動作.不再像那些舊風格的hip-hop注視大范圍的移動以及腳步的動作.或許HENRY剛開始時只是一位默默無名的街頭舞者,但是當邁克爾傑克遜的一首remeber the time MTV出現時,大家首次看到這種我所謂的原地性舞蹈.這種新風格的舞蹈在這位世界流行音樂之王的MTV出現,馬上就掀起了一股風潮.我們不敢說是甚麼原因使這位HENRY先生一炮而紅.但是這首remeber the time中的舞蹈正是他的傑作.後來瑪利亞凱莉的Dreamlover歌曲MTv中,我們看到了一片草原上有一群只穿者褲子的黑人跳著奇怪風格的舞蹈.這些舞蹈中夾雜著hip-hop.Locking(鎖舞).Popping(機械舞).Wave(電流)這些東西.卻配合著是Dreamlover這種R&B式曲風的hip-hop音樂.我們很難相信我們所看到的東西.當時我們很難去斷定這是甚麼樣的舞蹈.但是,這卻是NEW SCHOOL hip-hop發展史上很重要的一節,他是全世界開始流行NEW SCHOOL的起源也是"罪魁禍首". 備注: MOP TOP(ElITE FORCE)的Henry Link(右). Loose Joint(中).Buddha Stretch(左)也擔任了JAPAN DANCE DElIGHT 第2和4集的裁判.
成熟階段
正所謂的NEW SCHOOL hip-hop.我給他一個定義就是將各種不一樣類型的舞蹈串聯在一起,以一首輕快慢板的hip-hop或R&B表現出來.(這也是NEW SCHOOl初期的一種型態)我們看到這首Dreamlover中這群由Henry帶領的黑人舞群,做出了令人難以理解的舞蹈動作,他們把以往只能搭配快節奏的LOCKING(鎖舞)在R&B的慢式舞曲節奏中以一種新的感覺去表現它,他們不再做這種一定要類似雙節棍般甩手挽般的動作去表現LOCKING(鎖舞),他們簡化了許多LOCKING(鎖舞)的動作.並且以標準的hip-hop左右式律動去表現Popping(機械舞)和LOCKING(鎖舞),也不時的在舞蹈中加上WAVE(電流)的東西.簡單 Hip Hop
的說,就是用新的感覺去詮釋這些舊的舞步.馬上,日本的知名街舞團體兼歌手ZOO所發行的新單曲"叮當叮當"中,也用了這種NEW SCHOOL hip-hop來表現MTv中的舞蹈.一不注意......這種新風格的街舞已經在全世界流行開來了. 後來慢慢的,這位HENRY在馬麗亞凱利的歌曲Fantasy以及近期的Honey中階擔任了編舞的工作,其次像之前紅及一時以解散的女子hip-hop團體TlC的歌曲Creep及電影MIB的MTV.我們慢慢發現這種hip-hop已經開始成熟.(當然的,這些MTV中大家也可以看到HENRY的蹤影.)前些時期最著名的的就是TlC的Waterfalls這支MTV,MTV中的"神奇抖肩膀"這個動作使NEW SCHOOL hip-hop又進入了另一個新的階段.
現在情況
不得不佩服日本人的頭腦,當這種NEW SCHOOL hip-hop在日本開始流行時,日本人發展出它們自己的另一套舞風,同樣的這也是另大家難以理解的事情.這些日本的hip-hop舞者開始用OlD SCHOOL的音樂跳NEW SCHOOL的hip-hop了.NEW SCHOOL的發源在以新的音樂風格表現舊的舞蹈.現在卻變成以舊的音樂風格來詮釋新的舞蹈.真的是很奇怪的一件事. 在動作上,近期的NEW SCHOOL hip-hop變化更多,尤其是在加上WAVE(電流)的東西時,它變得更沒有規律.如果以觀眾的眼光來看,似乎跳這些NEW SCHOOL的舞者都是"小兒麻痹"患者,因為身體的扭曲更加厲害,越來越沒有在舞蹈中所謂的規律性.
地域之分
我們可以分成New York Style與L.A Style兩種.這個兩個地區的東西呈現兩極化的風格.例如New York Style它就是我們一般所看到的身體扭曲變形,各種街舞大串聯的風格.或許New York是HENRY的大本營,所以自然而然的這個地區的hip-hop風格也較偏向HENRY的風格,原地性的舞蹈加上身體奇怪的扭曲與LOCKING(鎖舞).popping(機械舞)..WAVE(電流)這些東西的大會串,我們不難想像它正是一種黑人的隨性作風. 而L.A Style的hip-hop,它承襲延續了MC HAMMER及巴比布朗時期所流行的街舞.大動作及腳步的變化性,也保有了其勁爆的特性.只是在動作的變化上增加了許多新的花樣.也因為hip-hop分成了這兩大派系,所以許多舞者或雜志媒體上就不再統稱他們為hip-hop DANCE.他們稱New York Style的hip-hop為NEW SCHOOL.而稱 L.A Style的hip-hop為STREET DANCE.
到底NEW SCHOOL hip-hop是什麼
總而言之,NEW SCHOOL的hip-hop它包含者各種類型的街舞,包括LOCKING(鎖舞).popping(機械舞).WAVE(電流)以及MC HAMMER及巴比布朗時期的律動.只是在NEW SCHOOL hip-hop中看不到breaking DANCE(地板舞)的影子.就像前面提到的,它融合了各式的街舞型態,或許我們可以說它是一種集大成的舞蹈.然而現在的NEW SCHOOL DANCE包含的范疇又更廣了 不僅加入許多種舞蹈融合其中,如popin',BOOGIE(布吉) 取材范圍也更廣了!國外有些人認為"NEW SCHOOL的動作跟90年代的風車,Headspin來比較的話 顯而簡單許多" 但NEW SCHOOL的動作也是需要技巧的這就跟霹靂舞中的排腿(footwork)是相近的觀念 雖然隨性,但卻也包含頗多技巧在其中的道理是一樣的 然而OlD SCHOOL與NEW SCHOOL孰優?我們無法去真正的作個區分或比較.但是不知甚麼時候又會有更新風格的街舞出現,到時....我們現在所流行的NEW SCHOOL,又要變成歷史.又要變成另一種的OlD SCHOOL了.
塗鴉
編輯本段音樂作品
塗鴉藝術和嘻哈音樂一樣都起源於紐約的布朗克斯區,布朗克斯(Bronx)是唯一一個和美國本土連在一起的街區,也是紐約最窮的街區。自上個世紀60年代開始,這里就被黑人和來自中北美洲的拉丁裔居民所佔領。他們住在政府修建的設備簡陋的貧民公寓里,外面是破敗的街道和荒蕪的雜草。 多年的貧窮生活使得黑人青少年極度崇拜金錢,當職業運動員是他們迅速致富的一條捷徑。那段時間布朗克斯區內不多的幾塊籃球場上經常可以看見一群群光著膀子的黑人小夥子在打籃球,許多人脖子上都帶著指頭粗的金項鏈。對金錢的崇拜使得當眾炫耀財富成為布朗克斯區的一種時尚。當然也就有很多青少年做起了做起販毒、老鴇等違法的行當。 做這些違法的事情很有可能被警察抓住,或被街頭小混混盯上。因此這些人紛紛組織起幫會來保護自己。一時間布朗克斯涌現出無數黑社會組織,什麼「原始骷髏」、「野蠻浪人」、「標槍隊」、「皇家巫師」、「七皇冠」等等,不一而足。當時很多年輕人為了尋找一種歸屬感而加入到各種幫派中。在他們天真的想像中,幫派就像是李小龍電影里描寫的那樣,一夥人團結起來和對手打架,並在打架的過程中建立永恆的友誼。 那段時間整個布朗克斯到處可見塗寫得歪歪扭扭的幫派符號,混雜著「廁所文學」似的猥褻圖案。美國報紙形容布朗克斯「就像一個原始人聚居地」。難怪有人會把塗鴉和原始人聯系在一起,因為人類最早的文字和繪畫就是刻在牆上的,那些壁畫是史前人類留下的唯一的文明記錄。可隨著紙張的出現,壁畫反倒成了不開化的標志。尤其是當城市出現後,現代人似乎已經習慣了建築物光潔的表面,任何圖案都成了一種破壞,一種反文明的精神污染。 如果布朗克斯的壁畫永遠停留在幫派標簽的時代,那後人恐怕也就沒什麼好說的了。可是,幾個有繪畫天賦的人出於對簡陋的幫派標簽的不滿,開始自己設計新標簽,從此,這些幫派符號變得好看起來。再後來,一批富有造反精神的非幫派畫家終於意識到,牆是世界上最便宜、最實用的畫布,他們開始行動了。從此,一種新的藝術形式——「塗鴉」(Graffiti)誕生了。
編輯本段街球
是流行於城市的籃球比賽形式,亦是hip hop文化的重要分支之一。由於源於和流行於黑人社區,所以又稱黑人籃球。其後經過逐漸發展,成為現時世界流行的三人籃球比賽。一般比賽形式為一對一或三對三的比賽,對個人技術要求比較高。 1891年,加拿大籍美國麻省青年會學院的Dr. James Naismith(詹姆斯·奈史密斯博士)發明了籃球。而街頭籃球起源於20世紀初,美國首都華盛頓和紐約市貧民區的黑人青少年在空地上隨便搭建簡單的籃球架進行的籃球運動。其後兩地的參與者共同努力,並組織華盛頓學生體肯協會和黑人籃球聯盟等團體,令致街頭籃球迅速流行。其後街頭籃球傳至歐洲,並發展出3對3的比賽形式。由於對設備的要求低和簡單的比賽形式,運動得以在全世界迅速發展。
規則與特色
街頭籃球通常可在半個籃球場或在任何豎立籃球架的空地上進行。比賽參與者會被分為兩組,一方為攻擊,另一方則為防守。兩組人數最少可一對一,每組人數亦可由二至五人,而三對三是現時最常見的比賽形式。由於比賽場地要求小和組隊靈活,便於施展各項籃球的基本技巧。 即使是多人進行比賽,街頭籃球強調以單挑方式進行攻防戰,展示球員的個人技術。黑人的街頭籃球為自由籃球,著重觀賞性、注重個人動作和比賽的節奏感。比賽時,攻擊方可利用不同的運球技巧進行移動,務求將球送進球籃。街頭籃球的特色之一是快速移動,攻擊方藉運球和移動步法擺脫對手上籃得分,防守方亦藉合法的移動和防守阻止對手將籃球送進球籃。 在比賽規則方面,街頭籃球一般比較傳統正式籃球比賽寬松。例如傳統籃球比賽對持球有規定,在街頭籃球便不適用。美國黑人的街頭籃球沒有一定規則,由於講求體現個人表演風格,只要是對比賽沒有太大的妨礙,打得有創意和觀賞性,不少看似犯規的動作都是可接受的(甚至可不受任何比賽規則限制)。現普遍接受的比賽規例,基本依照傳統籃球比賽所用的國際籃球規則,再根據在半場進行比賽的特點和便於籃球愛好者參與等因素對某些條款稍作更改。
㈧ dvhop 演算法中,定位誤差跟信標節點的個數與通信距離關系 我模擬出來的結果不太正確 哪位大俠指點下
你運行下這個程序,應該是正確的。
%~~~~~~~~~~ DV-Hop演算法 ~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~
% BorderLength-----正方形區域的邊長,單位:m
% NodeAmount-------網路節點的個數
% BeaconAmount---信標節點數
% Sxy--------------用於存儲節點的序號,橫坐標,縱坐標的矩陣
%Beacon----------信標節點坐標矩陣;BeaconAmount*BeaconAmount
%UN-------------未知節點坐標矩陣;2*UNAmount
% Distance------未知節點到信標節點距離矩陣;2*BeaconAmount
%h---------------節點間初始跳數矩陣
%X---------------節點估計坐標初始矩陣,X=[x,y]'
% R------------------節點的通信距離,一般為10-100m
clear,close all;
BorderLength=100;
NodeAmount=100;
BeaconAmount=8;
UNAmount=NodeAmount-BeaconAmount;
R=50;
% D=zeros(NodeAmount,NodeAmount);%未知節電到信標節點距離初始矩陣;BeaconAmount行NodeAmount列
h=zeros(NodeAmount,NodeAmount);%初始跳數為0;BeaconAmount行NodeAmount列
X=zeros(2,UNAmount);%節點估計坐標初始矩陣
%~~~~~~~~~在正方形區域內產生均勻分布的隨機拓撲~~~~~~~~~~~~~~~~~~~~
C=BorderLength.*rand(2,NodeAmount);
%帶邏輯號的節點坐標
Sxy=[[1:NodeAmount];C];
Beacon=[Sxy(2,1:BeaconAmount);Sxy(3,1:BeaconAmount)];%信標節點坐標
UN=[Sxy(2,(BeaconAmount+1):NodeAmount);Sxy(3,(BeaconAmount+1):NodeAmount)];%未知節點坐標
%畫出節點分布圖
plot(Sxy(2,1:BeaconAmount),Sxy(3,1:BeaconAmount),'r*',Sxy(2,(BeaconAmount+1):NodeAmount),Sxy(3,(BeaconAmount+1):NodeAmount),'k.')
xlim([0,BorderLength]);
ylim([0,BorderLength]);
title('* 紅色信標節點 . 黑色未知節點')
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~初始化節點間距離、跳數矩陣~~~~~~~~~~~~~~~~~~~~~~
for i=1:NodeAmount
for j=1:NodeAmount
Dall(i,j)=((Sxy(2,i)-Sxy(2,j))^2+(Sxy(3,i)-Sxy(3,j))^2)^0.5;%所有節點間相互距離
if (Dall(i,j)<=R)&(Dall(i,j)>0)
h(i,j)=1;%初始跳數矩陣
elseif i==j
h(i,j)=0;
else h(i,j)=inf;
end
end
end
%~~~~~~~~~~~最短路經演算法計算節點間跳數~~~~~~~~~~~~~~~~~~~~
for k=1:NodeAmount
for i=1:NodeAmount
for j=1:NodeAmount
if h(i,k)+h(k,j)<h(i,j)%min(h(i,j),h(i,k)+h(k,j))
h(i,j)=h(i,k)+h(k,j);
end
end
end
end
h
%~~~~~~~~~~~~~求每個信標節點的校正值~~~~~~~~~~~~~~~~~~~~~~~~~~
h1=h(1:BeaconAmount,1:BeaconAmount);
D1=Dall(1:BeaconAmount,1:BeaconAmount);
for i=1:BeaconAmount
dhop(i,1)=sum(D1(i,:))/sum(h1(i,:));%每個信標節點的平均每跳距離
end
D2=Dall(1:BeaconAmount,(BeaconAmount+1):NodeAmount);%BeaconAmount行UNAmount列
for i=1:BeaconAmount
for j=1:UNAmount
if min(D2(:,j))==D2(i,j)
Dhop(1,j)=D2(i,j);%未知節點從最近的信標獲得校正值
end
end
end
Dhop
%~~~~~~~~~~~~~~~~用跳數估計距離~~~~~~~~~~~~~~~~~~~
hop1=h(1:BeaconAmount,(BeaconAmount+1):NodeAmount)%未知節點到信標跳數,BeaconAmount行UNAmount列
for i=1:UNAmount
hop=Dhop(1,i);%hop為從最近信標獲得的校正值
Distance(:,i)=hop*hop1(:,i);%%Beacon行UN列;
end
% %~~~~~~~~~~~~~~~~~最小二乘法求未知點坐標~~~~~~~~~~~~~~~~~~~~~~~~
d=Distance;
for i=1:2
for j=1:(BeaconAmount-1)
a(i,j)=Beacon(i,j)-Beacon(i,BeaconAmount);
end
end
A=-2*(a');
% d=d1';
for m=1:UNAmount
for i=1:(BeaconAmount-1)
B(i,1)=d(i,m)^2-d(BeaconAmount,m)^2-Beacon(1,i)^2+Beacon(1,BeaconAmount)^2-Beacon(2,i)^2+Beacon(2,BeaconAmount)^2;
end
X1=inv(A'*A)*A'*B;
X(1,m)=X1(1,1);
X(2,m)=X1(2,1);
end
UN
X
for i=1:UNAmount
error(1,i)=(((X(1,i)-UN(1,i))^2+(X(2,i)-UN(2,i))^2)^0.5);
end
figure;plot(error,'-o')
title('每個未知節點的誤差')
error=sum(error)/UNAmount
Accuracy=error/R
㈨ 求幾個xml+php的源碼,越簡單越好
兩個,第二個簡單一點
1、xml+php動態載入與分頁
//$this->iGlobal($vars,$cookie);
$this->outPut($vars,$cookie);
}
//function _shoplist_res(){
// $this->db->Close();
//}
function outPut($vars,$cookie){
/*$strQuery = "select count(*) as rc from ".$this->db_c->Db_Pre."pshop order by id desc";
$this->db->Query($strQuery);
$RecordCount = $this->db->Assoc();
$RecordCount = $RecordCount['rc'];
@$this->db->freeResult();*/
$RecordCount = 25;
if (empty($vars['pageNo'])) $vars['pageNo']= 1;
if (empty($vars['pageSize'])) $vars['pageSize']= 10;
$PageCount = ceil($RecordCount/$vars['pageSize']);
if ($vars['pageSize']>$RecordCount) $vars['pageSize']=$RecordCount;
if ($vars['pageNo']>$PageCount) $vars['pageNo']=$PageCount;
$xmlStr.= "<?xml version=\"1.0\" encoding=\"GBK\" ?>"."\n";
$xmlStr.= "<商鋪列表>"."\n";
$xmlStr.= "\t<翻頁工具 pageNo=\"".$vars['pageNo']."\" pageSize=\"".$vars['pageSize']."\" total=\"".$RecordCount."\"></翻頁工具>"."\n";
$xmlStr.= "\t<頁號碼>".$vars['pageNo']."</頁號碼>"."\n";
$xmlStr.= "\t<頁大小>".$vars['pageSize']."</頁大小>"."\n";
$xmlStr.= "\t<數量>".$RecordCount."</數量>"."\n";
$xmlStr.= "\t<頁數量>".$PageCount."</頁數量>"."\n";
//$strQuery = "select t1.*,t2.* from ".$this->db_c->Db_Pre."pshop as t1,".$this->db_c->Db_Pre."shoptype as t2 where t1.typenum=t2.typenum order by id desc "
// ."limit ".($vars['pageNo']-1)*$vars['pageSize'].",".$vars['pageSize'];
//die($strQuery);
//$this->db->Query($strQuery);
/*while($result = $this->db->Assoc()){
$xmlStr.= "\t"."\n";
$xmlStr.= "\t<商鋪>"."\n";
$xmlStr.= "\t\t<名稱><![CDATA[".$result['shopname']."]]></名稱>"."\n";
$xmlStr.= "\t\t<經營人><![CDATA[".$result['shopmaster']."]]></經營人>"."\n";
$xmlStr.= "\t\t<級別><![CDATA[".$result['shoptype']."]]></級別>"."\n";
$xmlStr.= "\t\t<簡介><![CDATA[".$result['shopintro']."]]></簡介>"."\n";
$xmlStr.= "\t\t<連接地址><![CDATA[personal_shop.php?id=".$result['id']."]]></連接地址>"."\n";
$xmlStr.= "\t</商鋪>"."\n";
}*/
$sc= $vars['pageNo']*$vars['pageSize'];
if ($sc>$RecordCount) $sc = $RecordCount;
for($i=($vars['pageNo']-1)*$vars['pageSize'];$i<$sc;$i++){
$xmlStr.= "\t"."\n";
$xmlStr.= "\t<商鋪>"."\n";
$xmlStr.= "\t\t<名稱><![CDATA[這是名稱:".$i."]]></名稱>"."\n";
$xmlStr.= "\t\t<經營人><![CDATA[這是經營人:".$i."]]></經營人>"."\n";
$xmlStr.= "\t\t<級別><![CDATA[這是級別:".$i."]]></級別>"."\n";
$xmlStr.= "\t\t<簡介><![CDATA[這是簡介:".$i."]]></簡介>"."\n";
$xmlStr.= "\t\t<連接地址><![CDATA[personal_shop.php?id=".$i."]]></連接地址>"."\n";
$xmlStr.= "\t</商鋪>"."\n";
}
$xmlStr.= "</商鋪列表>"."\n";
header("Content-type: text/xml\n\n");
echo $xmlStr;
}
}
$shoplist = new shoplist_res($vars,$HTTP_COOKIE_VARS);
//$shoplist->_shoplist_res();
unset($sthoplist);
?>
2、用php讀取xml數據
<?php
$parser = xml_parser_create(); //創建一個parser編輯器
xml_set_element_handler($parser, "startElement", "endElement");//設立標簽觸發時的相應函數 這里分別為startElement和endElenment
xml_set_character_data_handler($parser, "characterData");//設立數據讀取時的相應函數
$xml_file="1.xml";//指定所要讀取的xml文件,可以是url
$filehandler = fopen($xml_file, "r");//打開文件
while ($data = fread($filehandler, 4096))
{
xml_parse($parser, $data, feof($filehandler));
}//每次取出4096個位元組進行處理
fclose($filehandler);
xml_parser_free($parser);//關閉和釋放parser解析器
$name=false;
$position=false;
function startElement($parser_instance, $element_name, $attrs) //起始標簽事件的函數
{
global $name,$position;
if($element_name=="NAME")
{
$name=true;
$position=false;
echo "名字:";
}
if($element_name=="POSITION")
{$name=false;
$position=true;
echo "職位:";
}
}
function characterData($parser_instance, $xml_data) //讀取數據時的函數
{
global $name,$position;
if($position)
echo $xml_data."<br>";
if($name)
echo $xml_data."<br>";
}
function endElement($parser_instance, $element_name) //結束標簽事件的函數
{
global $name,$position;
$name=false;
$position=false;
}
?>
xml文件代碼如下:
<?xml version="1.0"?>
<employees>
<employee>
<name>張三</name>
<position age="45">經理</position>
</employee>
<employees>
<employee>
<name>李四</name>
<position age="45">助理</position>
</employee>
</employees>