㈠ 求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>