??xml version="1.0" encoding="utf-8" standalone="yes"?>久久精品国产亚洲av麻豆小说,97精品国产91久久久久久,国产精品美女久久久久AV福利http://www.shnenglu.com/humanchao/category/20275.html知识改变命运Q学习成未来?/description>zh-cnSun, 01 Mar 2015 11:44:55 GMTSun, 01 Mar 2015 11:44:55 GMT60? 国标一U和国标二汉字http://www.shnenglu.com/humanchao/archive/2015/02/25/209857.html胡满?/dc:creator>胡满?/author>Wed, 25 Feb 2015 03:16:00 GMThttp://www.shnenglu.com/humanchao/archive/2015/02/25/209857.htmlhttp://www.shnenglu.com/humanchao/comments/209857.htmlhttp://www.shnenglu.com/humanchao/archive/2015/02/25/209857.html#Feedback0http://www.shnenglu.com/humanchao/comments/commentRss/209857.htmlhttp://www.shnenglu.com/humanchao/services/trackbacks/209857.html一U国标汉字(3755个)

啊阿埃挨哎唉哀皑癌蔼矮艄爱隘鞍}安俺按暗岸胺案肮昂盎Ҏ熬翱袄傲奥懊澌捌扒叭吧W八疤巴拔跋靶把耙坝霸Ş爸白柏百摆䘪败拜E斑班搬扌颁板版扮拌伴瓣半办绊邦帮梆榜膀l棒蚌镑傍谤苞胞包褒剥薄雹保堡饱宝抱报暴v鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩h甭܇y迸逼E比鄙W彼蓖蔽毕毙毖币庇痚w敝弊必辟壁臂遉K鞭边~贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌Ȓ滨宾摈兵冰柄丙U饼炳病q玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜埠不布步K怖擦猜裁材才财睬t采彩菜蔡餐参蚕D惭惨灿苍舱仓藏操p槽曹草厕策侧册层y插叉茬茶查搽察岔差诧拆柴豺搀馋谗~铲产阐颤昌猖场常长偿肠厂敞畅唱倡超抄钞朝嘲潮l늂车扯撤掣L郴臣辰尘晨忱沉陈衬撑称城橙成呈乘程惩澄诚承逞骋U吃痴持匙池q弛驰耻侈尺赤翅斥炽充冲虫崇宠抽酬畴t稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚础储矗搐触处揣川穿椽传船喘串疮H幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳l疵茨磁雌辞慈瓷词此ơ聪葱囱匆从丛凑_醋促y篡H摧崔催脆瘁_Ҏ村存寸撮搓措挫错搭达{瘩打大呆歹傣戴带殆代贷袋待逮怠耽担丹单郸掸胆旦氮但惮E诞弹蛋当挡党荡刀捣蹈倒岛导到稻悼道盗d得的y灯ȝ瞪凳邓堤低滴q敌W狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀D碉叼雕凋刁掉吊钓调跌爹蝶q谍叠丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻z兜抖斗陡豆逗痘都督毒犊独读늝赌杜镀肚度渡妒端短L断缎堆兑队对墩吨y敦囤钝盾遁掇哆多夺垛w朵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耛_饉|二贰发罚{伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊x肪房防妨仿访U放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汄奋䆾忿愤_丰枫蜂峰锋风疯烽逢冯~讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服Q涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该Ҏ钙盖溉干甘杆柑竿肝赶感秆敢冈刚钢肛纲岗港杠篙皋高膏羔p搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各l根跟耕更庚羹埂耿梗工攻功恭龚供w公宫弓巩汞pA共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谯故顾固雇刮瓜剐寡挂褂乖拐怪棺兛_冠观馆|惯灌诏光广逛瑰规圭归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈骸孩v氦亥害骇酣憨邯韩含涵寒函喊罕撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号呵喝荷菏核֒何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘U喉侯猴吼厚候后g忽瑚壶葫胡蝴狐糊湖弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏Ƣ环桓还~换患唤痪豢焕涣宦荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦較U会烩汇讌l荤昏婚浑淯zM火获或惑霍货击圑֟机畸E积肌饥迹Ȁ讥鸡姬W~吉极棘辑籍集及急疾汲即嫉挤几脊己蓟技冀季伎剂悸济寄寂计记既忌际妓l纪嘉枷夹佳家加荚颊贄钑ցEgh枉嫁歼监坚笺间煎D艰奸~茧柬碱h捡简俭剪减荐槛鉴践贱见键g健舰剑饯渐溅涧徏僵姜浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊骄娇嚼搅铰矫o脚狡角饺~绞剿教酵较叫H揭接皆U街阶截劫节桔杰L竭洁l解姐戒藉芥界借介疥诫届巾{斤金今z襟紧锦仅}q靳晋禁q烬尽劲荆兢茎睛晶怺惊精_经井警景颈静境敬镜径痉靖竟竞净炯窘揪究U玖韭久怹酒厩救旧D咎就疚鞠拘狙疽居驹菊局咀矩D沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷L撅攫抉掘倔爵觉决诀l均菌钧军君M竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看hp扛抗亢炕考拷烤靠坯柯棵颗U壳咛_渴克d课肯啃垦恛_吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块{侩快宽Ƒ֌{狂框矿眶旷况亏盔岿H葵奎魁傀馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗捞劳牢老{姥酪烙涝勒乐雷镭蕄累儡垒擂肋类泪棱楞冷厘梨犁黎qL理李里鲤CD荔吏栗丽厉励砑֎利傈例俐痢立_沥隶力璃哩俩联莲连镰廉怜涟帘敛脔R恋炼l粮凉梁_p两辆量晾亮谅撩聊僚疗燎寥辽R了撂镣廖料列裂烈劣猎x霖临邻鳞淋凛赁吝拎玲菱雉铃伉凌灵陵岭领另o溜琉榴硫馏留刘瘤柳六龙聋咙W窿隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓露路赂鹿潞录陆戮驴吕铝G旅屡缕虑氯律率滤绿峦挛孪卵ؕ掠略抡轮伦仑沦纶螺罗逻锣骡裸落z骆l妈ȝ码蚂马骂嘛吗埋买麦卖q脉瞒馒蛮满蔓曼慢O谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌怹玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡p迷谜Ic秘觅泌蜜密q棉眠冕免勉娩~面苗描瞄藐Uؓ庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸摹蘑模膜摩抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮q募慕木目睦牧穆拿哪呐钠那娜Ux乃奶耐奈南男隑֛挠脑恼闹淖呢馁内嫩能妮霓倪惔拟你匿腻逆h蔫拈q碾撉|念娘酉K捏聂孽啮镊镍涅您柠狞凝宁拧泞牛扭钮U脓农弄奴努怒女暖虐疟挪懦糯诺哦Ƨ鸥D藕呕偶沤啪爬帕怕琶拍排牌徘湃派攀潘盘盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛L砰抨Ҏ彭蓬硼朋鹏捧碰坯砒Ҏ披劈琉|啤脾疲皮匹痞d譬篇偏片骗飘漂瓢撇瞥拼频品聘乒坪苹萍q_瓶评屏坡泼颇婆破迫_剖扑铺仆莆葡菩蒲埔朴圃普谱曝瀑期ƺ栖戚妻七凄漆柒沏其奇歧畦崎脐齐旗祁骑v岂乞企启契砌器气q弃汽泣讫掐恰洽牉|钎铅千迁{仟谦乾黔钱钛_潜遣谴堑嵌Ơ歉枪呛腔羌墙蔷强抢锹敲悄桥瞧乔L巧鞘撬翘峭俏H切茄且怯窃钦R亲秦琴勤Ҏ寝沁青L們֍清擎晴氰情顷请庆琼穷U丘q求囚酋泅区蛆曲w屈驱渠取娶龋趣d颧权醛泉全痊拳犬券劝~炔瘸却鹊榷雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热仁人忍韧Q认刃妊n扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如ix入褥软阮蕊瑞锐闰润若弱撒z萨腮鳃塞赛三叁伞散桑嗓丧搔骚扫嫂瑟色ӆ僧莎砂杀ҎU傻啥煞{晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上裳梢捎E烧芍勺韶少哨邵l奢赊蛇舌舍赦摄慑涉社讄甛_伸n深娠l神沈审婶甚肾慎渗声生甥牲升l省盛剩胜圣师失狮施湿诗虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳D抒输叔舒淑疏书赎孰熟薯暑曙|蜀黍鼠属术q树束戍竖墅庶数漱恕刯摔衰甩帅栓拴霜双爽谁水睡税吮瞬说硕朔烁斯撕嘶思私怸死肆寺嗣四伺似饲x耸怂颂送宋D搜艘擞嗽苏酥俗素速粟僛_溯宿诉肃酸蒜虽隋随l髓岁I遂隧祟孙损W蓑梭唆~琐索锁所塌他它她塔獭挞蹋t胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐p倘h淌趟烫掏涛滔l萄桃逃淘陶讨套特藤腾D梯剔t锑提题y啼体替嚏惕涕剃屉天d田甜恬舔腆挑条迢贴铁帖厅听烃汀廷停亭庭通桐酮瞳同铜彤童桶捅{统痛偷投头透凸U突囑־途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉|往旺望忘妄威巍微危韦违桅围唯惟为潍l苇萎委伟伪未蔚味畏胃喂位渭谓慰卫瘟温蚊文闻U吻E紊问嗡瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西矽晰嘻吔R牺稀息希悉膝夕惜熄烯溪汐犀檄袭席习媛_铣洗p隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜U咸贤衔舷闲涎u嫌显险现献县腺馅宪陷限U相厢镶香箱襄湘乡翔详惛_享项h像向象萧霄削哮嚣销消宵淆晓孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸Ҏ泄泻谢屑薪芯锌欣辛新d信衅星腥猩惺兴刑型Ş邢行醒幸杏性姓兄凶胸匈汚w熊休修羞朽嗅锈秀袖绣墟戌需虚嘘d许蓄酗叙旭序畜恤i婿l箋轩喧宣悬旋玄选癣眩绚靴薛学穴雪血勋熏循旬询寻驯ED汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟盐严研蜒岩ga颜阎炎沿奄掩D演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯U杨扬Y疡羊z阳氧Ԓ痒养h邀腰妖瑶摇遥H谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗UMA胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑v亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翌l茵荫因D音阴姻吟银淫寅饮a引隐印英樱婴鹰应~莹萤营荧蝇q赢盈媄颖硬映哟拥䄦臃痈应Rt蛹咏泳涌永恿勇用幽优悠忧尤由邮铀Ҏa渔R有友右佑釉诱又幼q淤于盂榆虞愚舆余俞N愉渝渔隅予娱雨与屿禹宇语玉域芋郁吁遇喻峪M愈欲p誉ʎ寓裕预U驭x渊冤元垣袁原援辕园员圆猿源缘q苑愿怨院曰约跃钥岳_月悦阅耘云郧匀陨允q蕴酝晕韵孕匝砸杂栽哉灾宰蝲再在咱攒暂赞赃脏葬遭p凿L早M蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎x札蝾铡闸眨栅榨咋乍炸诈摘斋宅H债寨L詹粘沄斩辗崭展蘸栈占战站湛l樟章嘪漛_掌涨杖丈帐̎仗胀瘴障招昭找沼늅|兆肇召遮折哲蛰辙者锗蔗这珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政症郑证芝枝支p知肢脂汁之织职直植殖执g址指止֏旨纸志挚掯致置帜峙制智U稚质炙痔滞ȝ中盅忠钟LU肿重仲众舟周州z诌_u肘帚咒皱宙昼骤珠株蛛q诸诛逐竹烛煮拄瞩׃著柱助蛀贮铸{住注祝L爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠~谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜仔籽滓子自渍字鬃踪宗综ȝ邹走奏揍U卒族诅ȝȝ嘴醉最|尊遉|左佐柞做作坐?/span>
 
二国标汉字Q?008个)

亍丌兀丐廿卅丕亘丞鬲孬噩oZ`匕乇夭爻卮氐囟胤馗毓N丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭创_剀剌剞剡剜蒯剽劂劁劐劓冂罔M仉仂仨仡仫仞伛伢T仵I伧伉伫佞佧攸佚佝佟佗伲伽佶u侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俛_倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘u俎龠汆ؐ兮巽黉馘冁夔勹匍a匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃冫冱冽冼凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹D谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧@谫谯谲谌谶卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邉邔R郏郅N郄郇郓郦郢郜郗郛郫郯N鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塑֢壅壑圩圬圪圳圹圮圯坜d坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芯苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茌荥荨茛荩荬荪荭荮莰荸莌莠莪莓莜莅荼莶莩荽莸荻莘莞莨菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廑ּ夼奁耷奕奚奘匏尢尬扌扪抟L拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨d吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕d哌哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啑֗喑啻嗟喽喑֖喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗑֘嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫d嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱dӇ帷幄q幛q幡岌屺岍岐岖岈岘岙岑岚岜g岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豛_巅彳彷徂徇徉後徕徙徜徨彛徵徼彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺ȝ猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾舛夥飧夤夂饣饧饨饩饪饫饬饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庌廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆_忭忸怙怉|怛怏怍怩怫怊怿怡恸Ҏ恺恂恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氉|汜汊沣沅沐沔沌汩ؐ汶沆沩泐泔沭h泱泗沲泠泖泺泫n沱泓泯mzҎz浃洇z洙z洮z|浒J涑揗涞涠涓涔浜挧渚淇淅淞渎涿淠渑淦淝淙渖|渌涮渫湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溽溻h溴滏溏滂溟Ş潆潇漤漕Ҏ漶潋潴漪漉澃澉澍澌潸潲潼潺濑ȉ澧ҎȂ濡Ȯ濞Ƞ濯瀚瀣瀛瀹늁灞宀宄宕宓宥宸甯骞搴寤寮褰寰y謇辶迓qEq迤q迦q逅逄逋逦逑逍逖逡逵选逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘d屐屙孱屣屦羼弪徃弭艴弼鬻屮妁妃妍妩妪妣妗姊妫妞妤姒妲妯姗妑֨娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尜孚孥孛_孓孢驵驷驔R驉K骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧U纡U纥U纩U纰Ul绂l绋l绐l绗l绠l绨l焝l绱l缍l羏lȝ~缂~缇~缋~缏~缒~缙~缛~缡~E~I~缧~O~݋~缰~q~缵q畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杉|枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桄桤梃栝桕桦桁桧桀栾桊桉栩梉|桴桷梓桫楮椟椠棹椤棰椋椁楗棣椐楱Ҏ楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣Ҏ榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橛樉|Ҏ樨橘檑檐檩檗檫LD殂D殄D殓D殚D殡D茢轭誄轲轳轵轶轸轷轹zD辁辂辄辇辋辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗h暌暧暝暾曛曜曦曩贲J贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰搿擘耄毪x毉|氅氇氆氍氕氘氙氚氡氩氤@氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽p肭肴肯胨胩胪胛胂胄胙胍胗朐胝胫p胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩D腭腧塍媵膈膂膑滕膣膪臌朦臊膻臁膦Ƥ欷Ҏ歆歙飑飒飓飕飙飚D_毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀Lq烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳늆熠燠燔燧燹爝爨灬焘煦Ҏ戽扃扈扉Cȝ祉祜祚祗祯祺禊禧_忐怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺ȝ砼砥砬砣砩硎硖砦硇硪碓碇碡碲碥磙礅礓C礞C龛黚wQ黼盱眄眍盹眇眈眚眢眙眭眦늜睐睑睇睃睚睨睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘|罟詈罨|窄|羁|盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶钷钸钚w钼钽钉K铈铉铊铋铌铍铎铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪铩铫铮铯铳铴铵铷铹铼铽铉K锂锆锇锉锊锍锎锏锒锓锔锕锖锘锛锝锞锟锢锪锫锩锬锱锲锴锉锔RN镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤镥镦镧镨镩镪镫镬镯镱镲镳锺矧矬雉秕U秣U稆嵇稃E稞E稹EL黏馥I皈皎皓皙皤瓞瓠甬鸠鸢o鸩鸪鸫鸬鸲鸱鸉鸷鸹鸺D鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦鹧鹨鹩鹪鹫鹬ؕ鹭^疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃q痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯竦I穹HH窈H窦H窬H窭H衩衲衽衿袂袢裆袷D裢裎裣裥pD裾裰褡褙褓褛褊褴褫褶襁襦ȝ胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨p耵聃聆聍聒聩pR颃颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺D蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺p蛉蛏蚴蛩p蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缉|罄|舐竺竽W笃W笕W笫W筇W笪W笮WqW笤W笾W筘{筅{늭{筠{筻{筲{q箧箬箨箪箢箴篁篝篥篪篾簏簋@簸c籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羧羰籼敉粑_粜_粢_粼_糁p糌p糈p糗p艮暨羿翕翡翩翳pvE綮J纛麔R赌趑p赭豇豉酊酐酎酏酤酢酡酰酩酯酽N酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾跫t蹙y趵趼跖跗跚跞跎跏跛跆跬؜跸P跹跻跤踉跽踔t踟t踮t踯tt踵t踱y蹁y蹑y蹊yƈyDy躅w躔w躜w貂貊貅貘貔斛觖觞觚觜觥觫觯訾靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅龆龇龈龉龊龌N鼍隹隼隽雎雒瞉K銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞鲟鲠鲡鲢鲣鲥鲦鲨鲩鲫鲭鲮鲰鲱鲲鲳鲴鲵鲶鲷鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋鳌鳍鳎鳏鳐鳓鳔鳕鳗鳘鳙鳜鳝鳟L靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骉骼髁髀髅髂髋髌髑魅魇魈魑飨餍饕饔髟髡髦髯髫髻髭髚w鬏鬓鬟鬣麽麾^麂麇麈麋麒鏖麝麟黛黜黝黠黟黢W黧黥黪黯鼢鼬鼯鼹鼷鼽N


]]>
转:l典的String Hash法 http://www.shnenglu.com/humanchao/archive/2012/12/26/196690.html胡满?/dc:creator>胡满?/author>Wed, 26 Dec 2012 09:08:00 GMThttp://www.shnenglu.com/humanchao/archive/2012/12/26/196690.htmlhttp://www.shnenglu.com/humanchao/comments/196690.htmlhttp://www.shnenglu.com/humanchao/archive/2012/12/26/196690.html#Feedback0http://www.shnenglu.com/humanchao/comments/commentRss/196690.htmlhttp://www.shnenglu.com/humanchao/services/trackbacks/196690.html设计高效法往往需要用Hash表,O(1)U的查找速度是Q何别的算法无法比拟的?/span>
所谓HashQ一般是一个整敎ͼ通过某种法Q可以把一个字W串"pack"成一个整敎ͼq个数称为HashQ当Ӟ一个整数是无法对应一个字W串的?/span>
所以Hash函数是Hash表最核心的部分,对于一个Hash函数Q评价其优劣的标准应为随机性或L性,卛_L一l标本,q入Hash表每一个单元(cellQ之概率的^均程度,因ؓq个概率^均,两个字符串计出的Hash值相{hash collision的可能越,数据在表中的分布pq_Q表的空间利用率p高?/span>

Hash表的构造和冲突的不同实现方法对执行效率也有一定的影响.

DJBHash是一U非常流行的法Q俗U?Times33"法。Times33的算法很单,是不断的乘33Q原型如?/span>

hash(i) = hash(i-1) * 33 + str[i]

Time33在效率和随机性两斚w上俱佟?/span>

其它常用字符串哈希函数有Q?/span>
BKDRHashQAPHashQJSHashQRSHashQSDBMHashQPJWHashQELFHash{。BKDRHash和APHash也是比较优秀的算法。当然要Ҏ具体应用选择合适的Hash法Q比如字W集的考虑?/span>

APHash作者Arash Partow有一个页面很有参考h|包括了各UHash的介l及代码?/span>

http://www.partow.net/programming/hashfunctions/#RSHashFunction

Blizzard使用的算法比较精妙,被称?One-Way Hash"Qƈ且在Hash表中使用了三个哈希?一个用来确定位|,另外两个用来校验)?/span>

MD5{加密算法也属于hashQ不q已被中国学者找到碰撞检的破解法

]]>
转:循环有序数组查找问题http://www.shnenglu.com/humanchao/archive/2012/12/26/196686.html胡满?/dc:creator>胡满?/author>Wed, 26 Dec 2012 08:15:00 GMThttp://www.shnenglu.com/humanchao/archive/2012/12/26/196686.htmlhttp://www.shnenglu.com/humanchao/comments/196686.htmlhttp://www.shnenglu.com/humanchao/archive/2012/12/26/196686.html#Feedback0http://www.shnenglu.com/humanchao/comments/commentRss/196686.htmlhttp://www.shnenglu.com/humanchao/services/trackbacks/196686.htmlhttp://blog.sina.com.cn/s/blog_a2498b5b01014bsg.html

题目描述Q?/strong>

     一个@环有序数l(如:3,4,5,6,7,8,9,0,1,2Q,不知道其最值的位置Q要查找M数值的位置。要求算法时间复杂度为log2(n)?/span>


问题分析Q?/strong>

    我们可以把@环有序数l分为左右两部分Q以mid = Qlow+highQ? 2为界Q,由@环有序数l的特点知,左右两部分必有一部分是有序的Q我们可以找出有序的q部分,然后看所查找元素是否在有序部分,若在Q则直接Ҏ序部分二分查找,若不在,Ҏ序部分递归调用查找函数?/span>

代码如下Q?/strong>

    #include <iostream>

    using namespace std;

    int binarySearch(int a[],int low,int high,int value)  //二分查找
    {
        if(low>high)
            return -1;

        int mid=(low+high)/2;

        if(value==a[mid])
            return mid;
        else if(value>a[mid])
            return binarySearch(a,mid+1,high,value);
        else
            return binarySearch(a,low,mid-1,value);
    }

    int Search(int a[],int low,int high,int value)     //循环有序查找函数
    {
        int mid=(low+high)/2;

        if(a[mid]>a[low])       //左有?br />        {
            if(a[low]<=value && value<=a[mid] )        //说明value在左边,直接二分查找
            {
                return binarySearch(a,low,mid,value);
            }

            else                                       //value在右?br />            {
                return Search(a,mid+1,high,value);
            }
        }
        else                    //x?br />        {
            if(a[mid]<=value && value<=a[high])
            {
                return binarySearch(a,mid,high,value);
            }
            else
            {
                return Search(a,low,mid-1,value);
            }
        }
    }

    int main()
    {
        int a[]={3,4,5,6,7,8,9,0,1,2};

        cout<<Search(a,0,9,0)<<endl;

        return 0;
    }



]]>
转:大小端问?/title><link>http://www.shnenglu.com/humanchao/archive/2012/12/26/196684.html</link><dc:creator>胡满?/dc:creator><author>胡满?/author><pubDate>Wed, 26 Dec 2012 08:06:00 GMT</pubDate><guid>http://www.shnenglu.com/humanchao/archive/2012/12/26/196684.html</guid><wfw:comment>http://www.shnenglu.com/humanchao/comments/196684.html</wfw:comment><comments>http://www.shnenglu.com/humanchao/archive/2012/12/26/196684.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/humanchao/comments/commentRss/196684.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/humanchao/services/trackbacks/196684.html</trackback:ping><description><![CDATA[<p align="center" style="text-align:center;"></p><div style="text-align: left;"><font face="楷体_GB2312"><span style="font-size: 21px;"><strong>转自Q?/strong></span></font><a >http://wenku.baidu.com/view/9e2d2f3e5727a5e9856a6167.html</a><br /><font face="楷体_GB2312"><span style="font-size: 21px;"><strong><br /></strong></span></font></div><strong><span style="font-size:16.0pt;font-family: 楷体_GB2312;Times New Roman";">大小端问?/span></strong><strong></strong><p> </p> <p align="left"><strong><span style="font-size:12.0pt; font-family:"Times New Roman","serif";">By unanao</span></strong></p> <p align="left"><strong><span style="font-size:12.0pt; font-family:"Times New Roman","serif";"><sunjianjiao@gmail.com></span></strong></p> <p align="left"> </p> <p align="left"><span style="font-size:12.0pt;font-family:楷体_GB2312;Times New Roman";">一、什么是大小端问?/span></p> <p align="left"><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">(From</span><span style="font-size:12.0pt;font-family:楷体_GB2312;Times New Roman";">?/span><span style="font-size:12.0pt; font-family:"Times New Roman","serif";">Computer Systems,A Programer's Perspective</span><span style="font-size:12.0pt;font-family:楷体_GB2312;Times New Roman";">?/span><span style="font-size:12.0pt; font-family:"Times New Roman","serif";">)</span><span style="font-size: 12.0pt;font-family:楷体_GB2312;Times New Roman";">在几乎所有的机器上,多字节对象被存储l的字节序列Q对象的地址为所使用字节序列中最低字节地址?/span></p> <p align="left" style="text-indent: 24pt; line-height: 18pt; "><span style="font-size:12.0pt;font-family:楷体_GB2312;Times New Roman";">端Q某些机器选择在存储器中按照从最低有效字节到最高有效字节的序存储对象Q这U最低有效字节在最前面的表C方式被UCؓ</span><strong><em><span style="font-size:12.0pt;font-family:楷体_GB2312;Times New Roman";">端?/span></em></strong><strong><em><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">(little endian)</span></em></strong> <span style="font-size: 12.0pt;font-family:楷体_GB2312;Times New Roman";Times New Roman";">?/span><span style="font-size: 12pt; font-family: 楷体_GB2312; letter-spacing: 0.4pt; ">q样的存储模式有点儿cM于把数据当作字符串顺序处理:地址由小向大增加Q而数据从高位往低位放;</span></p> <p align="left" style="line-height: 18pt; "><span style="font-size:12.0pt; font-family:"Times New Roman","serif";">       </span><span style="font-size:12.0pt; font-family:楷体_GB2312;Times New Roman";">大端Q某些机器则按照从最高有效字节到最低有效字节的序储存Q这U最高有效字节在最前面的方式被UCؓ</span><strong><em><span style="font-size:12.0pt;font-family:楷体_GB2312;Times New Roman";">大端?/span></em></strong><strong><em><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">(big endian)</span></em></strong> <span style="font-size: 12.0pt;font-family:楷体_GB2312;Times New Roman";Times New Roman";">?/span><span style="font-size: 12pt; font-family: 楷体_GB2312; letter-spacing: 0.4pt; ">q种存储模式地址的高低和数据位权有效地结合v来,高地址部分权值高Q低地址部分权gQ和我们的逻辑Ҏ一致?/span></p> <p> </p> <p> <span style="font-size:12.0pt; font-family:楷体_GB2312;Times New Roman";">举个例子来说名大端</span><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">:  </span><span style="font-size:12.0pt; font-family:楷体_GB2312;Times New Roman";">比如一?/span><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">int x, </span><span style="font-size:12.0pt; font-family:楷体_GB2312;Times New Roman";">地址?/span><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">0x100, </span><span style="font-size:12.0pt; font-family:楷体_GB2312;Times New Roman";">它的gؓ</span><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">0x1234567. </span><span style="font-size:12.0pt; font-family:楷体_GB2312;Times New Roman";">则它所占据?/span><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">0x100, 0x101, 0x102, 0x103</span><span style="font-size:12.0pt; font-family:楷体_GB2312;Times New Roman";">地址l织如下?/span><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">:</span></p> <p><br /><img src="http://www.shnenglu.com/images/cppblog_com/humanchao/新徏位图囑փ.jpg" width="601" height="180" alt="" /><br /><br /></p> <p align="left" style="line-height: 18pt; "><span style="font-size: 12pt; font-family: 楷体_GB2312; letter-spacing: 0.4pt; ">二、ؓ什么会有大端模式之分呢?</span></p> <p align="left" style="text-indent: 25.2pt; line-height: 18pt; "><span style="font-size: 12pt; font-family: 楷体_GB2312; letter-spacing: 0.4pt; ">q是因ؓ在计机pȝ中,我们是以字节为单位的Q每个地址单元都对应着一个字节,一个字节ؓ</span><span style="font-size: 12pt; font-family: 'Times New Roman', serif; letter-spacing: 0.4pt; "> 8bit</span><span style="font-size: 12pt; font-family: 楷体_GB2312; letter-spacing: 0.4pt; ">。但是在</span><span style="font-size: 12pt; font-family: 'Times New Roman', serif; letter-spacing: 0.4pt; ">C</span><span style="font-size: 12pt; font-family: 楷体_GB2312; letter-spacing: 0.4pt; ">语言中除?/span><span style="font-size: 12pt; font-family: 'Times New Roman', serif; letter-spacing: 0.4pt; ">8bit</span><span style="font-size: 12pt; font-family: 楷体_GB2312; letter-spacing: 0.4pt; ">?/span><span style="font-size: 12pt; font-family: 'Times New Roman', serif; letter-spacing: 0.4pt; ">char</span><span style="font-size: 12pt; font-family: 楷体_GB2312; letter-spacing: 0.4pt; ">之外Q还?/span><span style="font-size: 12pt; font-family: 'Times New Roman', serif; letter-spacing: 0.4pt; ">16bit</span><span style="font-size: 12pt; font-family: 楷体_GB2312; letter-spacing: 0.4pt; ">?/span><span style="font-size: 12pt; font-family: 'Times New Roman', serif; letter-spacing: 0.4pt; ">short</span><span style="font-size: 12pt; font-family: 楷体_GB2312; letter-spacing: 0.4pt; ">型,</span><span style="font-size: 12pt; font-family: 'Times New Roman', serif; letter-spacing: 0.4pt; ">32bit</span><span style="font-size: 12pt; font-family: 楷体_GB2312; letter-spacing: 0.4pt; ">?/span><span style="font-size: 12pt; font-family: 'Times New Roman', serif; letter-spacing: 0.4pt; ">long</span><span style="font-size: 12pt; font-family: 楷体_GB2312; letter-spacing: 0.4pt; ">型(要看具体的编译器Q,另外Q对于位数大?/span><span style="font-size: 12pt; font-family: 'Times New Roman', serif; letter-spacing: 0.4pt; "> 8</span><span style="font-size: 12pt; font-family: 楷体_GB2312; letter-spacing: 0.4pt; ">位的处理器,例如</span><span style="font-size: 12pt; font-family: 'Times New Roman', serif; letter-spacing: 0.4pt; ">16</span><span style="font-size: 12pt; font-family: 楷体_GB2312; letter-spacing: 0.4pt; ">位或?/span><span style="font-size: 12pt; font-family: 'Times New Roman', serif; letter-spacing: 0.4pt; ">32</span><span style="font-size: 12pt; font-family: 楷体_GB2312; letter-spacing: 0.4pt; ">位的处理器,׃寄存器宽度大于一个字节,那么必然存在着一个如果将多个字节安排的问题。因此就D了大端存储模式和端存储模式。例如一?/span><span style="font-size: 12pt; font-family: 'Times New Roman', serif; letter-spacing: 0.4pt; ">16bit</span><span style="font-size: 12pt; font-family: 楷体_GB2312; letter-spacing: 0.4pt; ">?/span><span style="font-size: 12pt; font-family: 'Times New Roman', serif; letter-spacing: 0.4pt; ">short</span><span style="font-size: 12pt; font-family: 楷体_GB2312; letter-spacing: 0.4pt; ">?/span><span style="font-size: 12pt; font-family: 'Times New Roman', serif; letter-spacing: 0.4pt; ">x</span><span style="font-size: 12pt; font-family: 楷体_GB2312; letter-spacing: 0.4pt; ">Q在内存中的地址?/span><span style="font-size: 12pt; font-family: 'Times New Roman', serif; letter-spacing: 0.4pt; ">0x0010</span><span style="font-size: 12pt; font-family: 楷体_GB2312; letter-spacing: 0.4pt; ">Q?/span><span style="font-size: 12pt; font-family: 'Times New Roman', serif; letter-spacing: 0.4pt; ">x</span><span style="font-size: 12pt; font-family: 楷体_GB2312; letter-spacing: 0.4pt; ">的gؓ</span><span style="font-size: 12pt; font-family: 'Times New Roman', serif; letter-spacing: 0.4pt; ">0x1122</span><span style="font-size: 12pt; font-family: 楷体_GB2312; letter-spacing: 0.4pt; ">Q那?/span><span style="font-size: 12pt; font-family: 'Times New Roman', serif; letter-spacing: 0.4pt; ">0x11</span><span style="font-size: 12pt; font-family: 楷体_GB2312; letter-spacing: 0.4pt; ">为高字节Q?/span><span style="font-size: 12pt; font-family: 'Times New Roman', serif; letter-spacing: 0.4pt; ">0x22</span><span style="font-size: 12pt; font-family: 楷体_GB2312; letter-spacing: 0.4pt; ">Z字节。对?/span> <span style="font-size: 12pt; font-family: 楷体_GB2312; letter-spacing: 0.4pt; ">大端模式Q就?/span><span style="font-size: 12pt; font-family: 'Times New Roman', serif; letter-spacing: 0.4pt; ">0x11</span><span style="font-size: 12pt; font-family: 楷体_GB2312; letter-spacing: 0.4pt; ">攑֜低地址中,?/span><span style="font-size: 12pt; font-family: 'Times New Roman', serif; letter-spacing: 0.4pt; ">0x0010</span><span style="font-size: 12pt; font-family: 楷体_GB2312; letter-spacing: 0.4pt; ">中,</span><span style="font-size: 12pt; font-family: 'Times New Roman', serif; letter-spacing: 0.4pt; ">0x22</span><span style="font-size: 12pt; font-family: 楷体_GB2312; letter-spacing: 0.4pt; ">攑֜高地址中,?/span><span style="font-size: 12pt; font-family: 'Times New Roman', serif; letter-spacing: 0.4pt; ">0x0011</span><span style="font-size: 12pt; font-family: 楷体_GB2312; letter-spacing: 0.4pt; ">中。小端模式,刚好相反。我们常用的</span><span style="font-size: 12pt; font-family: 'Times New Roman', serif; letter-spacing: 0.4pt; ">X86</span><span style="font-size: 12pt; font-family: 楷体_GB2312; letter-spacing: 0.4pt; ">l构是小端模</span> <span style="font-size: 12pt; font-family: 楷体_GB2312; letter-spacing: 0.4pt; ">式,?/span><span style="font-size: 12pt; font-family: 'Times New Roman', serif; letter-spacing: 0.4pt; ">KEIL C51</span><span style="font-size: 12pt; font-family: 楷体_GB2312; letter-spacing: 0.4pt; ">则ؓ大端模式。很多的</span><span style="font-size: 12pt; font-family: 'Times New Roman', serif; letter-spacing: 0.4pt; ">ARM</span><span style="font-size: 12pt; font-family: 楷体_GB2312; letter-spacing: 0.4pt; ">Q?/span><span style="font-size: 12pt; font-family: 'Times New Roman', serif; letter-spacing: 0.4pt; ">DSP</span><span style="font-size: 12pt; font-family: 楷体_GB2312; letter-spacing: 0.4pt; ">都ؓ端模式。有?/span><span style="font-size: 12pt; font-family: 'Times New Roman', serif; letter-spacing: 0.4pt; ">ARM</span><span style="font-size: 12pt; font-family: 楷体_GB2312; letter-spacing: 0.4pt; ">处理器还可以q件来选择是大端模式还是小端模式?/span></p> <p> </p> <p><span style="font-size:12.0pt; font-family:楷体_GB2312;Times New Roman"">三、如何区分大端问题Q?/span></p> <p><span style="font-size:12.0pt; font-family:楷体_GB2312;Times New Roman";Times New Roman"">Ҏ</span><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">1</span><span style="font-size:12.0pt; font-family:楷体_GB2312;Times New Roman";Times New Roman"">Q?/span></p> <p><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">#include <stdio.h></span></p> <p> </p> <p><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">int main(void)</span></p> <p><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">{</span></p> <p><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">       int i = 1;</span></p> <p><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">       unsigned char *pointer;</span></p> <p> </p> <p><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">       pointer = (unsigned char *)&i;</span></p> <p><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">       if(*pointer)</span></p> <p><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">       {</span></p> <p><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">              printf("litttle_endian");</span></p> <p><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">       }</span></p> <p><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">       else</span></p> <p><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">       {</span></p> <p><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">              printf("big endian\n");</span></p> <p><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">       }</span></p> <p> </p> <p><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">       return 0;</span></p> <p><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">}</span></p> <p><span style="font-size: 12pt; font-family: 'Times New Roman', serif; ">       </span><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">C</span><span style="font-size:12.0pt;font-family:楷体_GB2312;Times New Roman"">中的数据cd都是从内存的低地址向高地址扩展Q取址q算</span><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">"&"</span><span style="font-size:12.0pt;font-family:楷体_GB2312;Times New Roman"">都是取低地址</span><span style="font-size: 12pt; font-family: 楷体_GB2312; ">。小端方式中Q?/span><span style="font-size: 12pt; font-family: 'Times New Roman', serif; ">i</span><span style="font-size: 12pt; font-family: 楷体_GB2312; ">占至两个字节的长度Q则</span><span style="font-size: 12pt; font-family: 'Times New Roman', serif; ">i</span><span style="font-size: 12pt; font-family: 楷体_GB2312; ">所分配的内存最地址那个字节中就存着</span><span style="font-size: 12pt; font-family: 'Times New Roman', serif; ">1</span><span style="font-size: 12pt; font-family: 楷体_GB2312; ">Q其他字节是</span><span style="font-size: 12pt; font-family: 'Times New Roman', serif; ">0</span><span style="font-size: 12pt; font-family: 楷体_GB2312; ">?/span><span style="font-size: 12pt; font-family: 楷体_GB2312; ">大端的话?/span><span style="font-size: 12pt; font-family: 'Times New Roman', serif; ">1</span><span style="font-size: 12pt; font-family: 楷体_GB2312; ">?/span><span style="font-size: 12pt; font-family: 'Times New Roman', serif; ">i</span><span style="font-size: 12pt; font-family: 楷体_GB2312; ">的最高地址字节处存放,</span><span style="font-size: 12pt; font-family: 'Times New Roman', serif; ">char</span><span style="font-size: 12pt; font-family: 楷体_GB2312; ">是一个字节,所以强制将</span><span style="font-size: 12pt; font-family: 'Times New Roman', serif; ">char</span><span style="font-size: 12pt; font-family: 楷体_GB2312; ">型量</span><span style="font-size: 12pt; font-family: 'Times New Roman', serif; ">p</span><span style="font-size: 12pt; font-family: 楷体_GB2312; ">指向</span><span style="font-size: 12pt; font-family: 'Times New Roman', serif; ">i</span><span style="font-size: 12pt; font-family: 楷体_GB2312; ">Q?/span><span style="font-size: 12pt; font-family: 楷体_GB2312; ">?/span><span style="font-size: 12pt; font-family: 'Times New Roman', serif; ">p</span><span style="font-size: 12pt; font-family: 楷体_GB2312; ">指向的一定是</span><span style="font-size: 12pt; font-family: 'Times New Roman', serif; ">i</span><span style="font-size: 12pt; font-family: 楷体_GB2312; ">的最低地址Q那么就可以判断</span><span style="font-size: 12pt; font-family: 'Times New Roman', serif; ">p</span><span style="font-size: 12pt; font-family: 楷体_GB2312; ">中的值是不是</span><span style="font-size: 12pt; font-family: 'Times New Roman', serif; ">1</span><span style="font-size: 12pt; font-family: 楷体_GB2312; ">来确定是不是端?/span></p> <p> </p> <p><span style="font-size: 12pt; font-family: 楷体_GB2312; ">Ҏ</span><span style="font-size: 12pt; font-family: 'Times New Roman', serif; ">2</span><span style="font-size: 12pt; font-family: 楷体_GB2312; ">Q?/span></p> <p><span style="font-size: 12pt; font-family: 'Times New Roman', serif; ">#include <stdio.h></span></p> <p> </p> <p><span style="font-size: 12pt; font-family: 'Times New Roman', serif; ">int main(void)</span></p> <p><span style="font-size: 12pt; font-family: 'Times New Roman', serif; ">{</span></p> <p><span style="font-size: 12pt; font-family: 'Times New Roman', serif; ">       union {</span></p> <p><span style="font-size: 12pt; font-family: 'Times New Roman', serif; ">              short a;</span></p> <p><span style="font-size: 12pt; font-family: 'Times New Roman', serif; ">              char ch;</span></p> <p><span style="font-size: 12pt; font-family: 'Times New Roman', serif; ">       } u;</span></p> <p><span style="font-size: 12pt; font-family: 'Times New Roman', serif; ">       u.a = 1;</span></p> <p> </p> <p><span style="font-size: 12pt; font-family: 'Times New Roman', serif; ">       if (u.ch == 1)</span></p> <p><span style="font-size: 12pt; font-family: 'Times New Roman', serif; ">       {</span></p> <p><span style="font-size: 12pt; font-family: 'Times New Roman', serif; ">              printf("Littel endian\n");</span></p> <p><span style="font-size: 12pt; font-family: 'Times New Roman', serif; ">       }</span></p> <p><span style="font-size: 12pt; font-family: 'Times New Roman', serif; ">       else</span></p> <p><span style="font-size: 12pt; font-family: 'Times New Roman', serif; ">       {</span></p> <p><span style="font-size: 12pt; font-family: 'Times New Roman', serif; ">              printf("Big endian\n");</span></p> <p><span style="font-size: 12pt; font-family: 'Times New Roman', serif; ">       }</span></p> <p><span style="font-size: 12pt; font-family: 'Times New Roman', serif; ">}</span></p> <p><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">       </span><span style="font-size:12.0pt; font-family:楷体_GB2312;Times New Roman";">利用联合体的特点Q数据成员共享内存空_</span><span style="font-size: 12.0pt;font-family:"Times New Roman","serif";">union</span><span style="font-size:12.0pt;font-family:楷体_GB2312;Times New Roman"">中元素的起始地址都是相同?/span><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">——</span><span style="font-size:12.0pt;font-family:楷体_GB2312;Times New Roman"">位于联合的开始?/span> <span style="font-size:12.0pt;font-family:楷体_GB2312;Times New Roman"">?/span><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">char</span><span style="font-size:12.0pt;font-family:楷体_GB2312;Times New Roman"">来截取感兴趣的字?span style="color:#2B2BD5">?/span></span></p> <p> </p> <p align="left"><span style="font-size:12.0pt;font-family:楷体_GB2312;Times New Roman";">四、需要考虑大小端(字节序Q的情况</span><span style="font-size:12.0pt;font-family:"Times New Roman","serif";"> </span></p> <p align="left"><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">1</span><span style="font-size:12.0pt;font-family:楷体_GB2312;Times New Roman";">、所写的E序需要向不同的硬件^台迁U,说不定哪一个^台是大端q是端Qؓ了保证可UL性,一定提前考虑好?/span></p> <p align="left"><strong><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">2. </span></strong><span style="font-size:12.0pt;font-family:楷体_GB2312;Times New Roman";">在不同类型的机器之间通过|络传送二q制数据时?/span> <span style="font-size:12.0pt;font-family:楷体_GB2312;Times New Roman";">一个常见的问题是当端法机器生的数据被发送到大端法机器或者反之时Q接受程序会发现Q字</span><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">(word)</span><span style="font-size:12.0pt;font-family:楷体_GB2312;Times New Roman";">里的字节</span><span style="font-size:12.0pt; font-family:"Times New Roman","serif";">(byte)</span><span style="font-size:12.0pt;font-family:楷体_GB2312;Times New Roman";">成了反序的。ؓ了避免这c问</span> <span style="font-size:12.0pt;font-family:楷体_GB2312;Times New Roman";">题,|络应用E序的代码编写必遵守已建立的关于字节顺序的规则Q以保发送方机器它的内部表C{换成|络标准Q而接受方机器则将|络标准转换为它的内部标准?/span></p> <p align="left"><strong><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">3. </span></strong><span style="font-size:12.0pt;font-family:楷体_GB2312;Times New Roman";">当阅读表C整数的字节序列时。这通常发生在检查机器E序Ӟ</span><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">e.g.</span><span style="font-size:12.0pt;font-family:楷体_GB2312;Times New Roman";">Q反汇编得到的一条指令:</span><span style="font-size:12.0pt;font-family: "Times New Roman","serif";"><br /> 80483bd: 01 05 64 94 04 08        add %eax, 0x8049464</span></p> <p align="left"><strong><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">3. </span></strong><span style="font-size:12.0pt;font-family:楷体_GB2312;Times New Roman";">当编写强转的cdpȝ的程序时?/span><span style="font-size:12.0pt;font-family:楷体_GB2312;Times New Roman";Times New Roman";">如写入的数据?/span><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">u32</span><span style="font-size:12.0pt;font-family:楷体_GB2312;Times New Roman";Times New Roman";">型,但是d的时候却?/span><span style="font-size: 12.0pt;font-family:"Times New Roman","serif";">char</span><span style="font-size:12.0pt;font-family:楷体_GB2312;Times New Roman";Times New Roman";">型的。如Q?/span><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">0x1234, </span><span style="font-size:12.0pt;font-family:楷体_GB2312;Times New Roman";Times New Roman";">大端d?/span><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">12</span><span style="font-size:12.0pt;font-family:楷体_GB2312;Times New Roman";Times New Roman";">Ӟ端独到的是</span><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">34</span><span style="font-size:12.0pt;font-family:楷体_GB2312;Times New Roman";Times New Roman";">?/span></p> <p align="left"><strong><span style="font-size: 12.0pt;font-family:楷体_GB2312;Times New Roman";">六、提高程序的可移植?/span></strong><strong></strong></p> <p align="left"><strong><span style="font-size: 12.0pt;font-family:楷体_GB2312;Times New Roman";">使用宏编?/span></strong><strong></strong></p> <p align="left"><strong><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">#ifdef LITTLE_ENDIAN</span></strong></p> <p align="left"><strong><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">//</span></strong><strong><span style="font-size:12.0pt;font-family:楷体_GB2312;Times New Roman";Times New Roman";">端的代?/span></strong><strong></strong></p> <p align="left"><strong><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">#else</span></strong></p> <p align="left"><strong><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">//</span></strong><strong><span style="font-size:12.0pt;font-family:楷体_GB2312;Times New Roman";Times New Roman";">大端的代?/span></strong><strong></strong></p> <p align="left"><strong><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">#endif</span></strong></p> <p> </p> <p><span style="font-size:12.0pt; font-family:楷体_GB2312;Times New Roman";Times New Roman"">七、大、小端之间的转换</span></p> <p><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">1</span><span style="font-size:12.0pt;font-family:楷体_GB2312;Times New Roman";Times New Roman"">、小端{换ؓ大端</span></p> <p><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">#include <stdio.h></span></p> <p> </p> <p><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">void show_byte(char *addr, int len)</span></p> <p><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">{</span></p> <p><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">       int i;</span></p> <p> </p> <p><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">       for (i = 0; i < len; i++)</span></p> <p><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">       {</span></p> <p><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">              printf("%.2x \t", addr[i]);</span></p> <p><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">       }</span></p> <p><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">       printf("\n");</span></p> <p><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">}</span></p> <p> </p> <p><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">int endian_convert(int t)</span></p> <p><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">{</span></p> <p><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">       int result;</span></p> <p><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">       int i;</span></p> <p> </p> <p><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">       result = 0;</span></p> <p><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">       for (i = 0; i < sizeof(t); i++)</span></p> <p><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">       {</span></p> <p><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">              result <<= 8;</span></p> <p><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">              result |= (t & 0xFF);</span></p> <p><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">              t >>= 8;</span></p> <p><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">       }</span></p> <p> </p> <p><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">       return result;</span></p> <p><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">}</span></p> <p> </p> <p><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">int main(void)</span></p> <p><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">{</span></p> <p><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">       int i;</span></p> <p><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">       int ret;</span></p> <p> </p> <p><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">       i = 0x1234567;</span></p> <p> </p> <p><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">       show_byte((char *)&i, sizeof(int));</span></p> <p><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">       ret = endian_convert(i);</span></p> <p><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">       show_byte((char *)&ret, sizeof(int));</span></p> <p> </p> <p><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">       return 0;</span></p> <p><span style="font-size:12.0pt;font-family:"Times New Roman","serif";">}</span></p> <p> </p><img src ="http://www.shnenglu.com/humanchao/aggbug/196684.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/humanchao/" target="_blank">胡满?/a> 2012-12-26 16:06 <a href="http://www.shnenglu.com/humanchao/archive/2012/12/26/196684.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转:模拟z牌(扑克)E序http://www.shnenglu.com/humanchao/archive/2012/12/26/196683.html胡满?/dc:creator>胡满?/author>Wed, 26 Dec 2012 07:59:00 GMThttp://www.shnenglu.com/humanchao/archive/2012/12/26/196683.htmlhttp://www.shnenglu.com/humanchao/comments/196683.htmlhttp://www.shnenglu.com/humanchao/archive/2012/12/26/196683.html#Feedback0http://www.shnenglu.com/humanchao/comments/commentRss/196683.htmlhttp://www.shnenglu.com/humanchao/services/trackbacks/196683.html转自Q?a >http://www.fredosaurus.com/notes-cpp/misc/random-shuffle.html

// File        : misc/random/deal.cpp - Randomly shuffle deck of cards.

// Illustrates : Shuffle algorithm, srand, rand.

// Improvements: Use classes for Card and Deck.

// Author      : Fred Swartz 2003-08-24, shuffle correction 2007-01-18

//               Placed in the public domain.

 

#include <iostream>

#include <cstdlib>   // for srand and rand

#include <ctime>     // for time

using namespace std;

 

int main() {

    int card[52];    // array of cards;

    int n;           // number of cards to deal

    srand(time(0));  // initialize seed "randomly"

    

    for (int i=0; i<52; i++) {

        card[i] = i;  // fill the array in order

    }

   

    while (cin >> n) {   

        //--- Shuffle elements by randomly exchanging each with one other.

        for (int i=0; i<(52-1); i++) {

            int r = i + (rand() % (52-i)); // Random remaining position.

            int temp = card[i]; card[i] = card[r]; card[r] = temp;

        }

       

        //--- Print first n cards as ints.

        for (int c=0; c<n; c++) {

            cout << card[c] << " ";  // Just print number

        }

        cout << endl;

    }

  

   return 0;

}



]]>
转:h距离http://www.shnenglu.com/humanchao/archive/2012/12/26/196680.html胡满?/dc:creator>胡满?/author>Wed, 26 Dec 2012 07:49:00 GMThttp://www.shnenglu.com/humanchao/archive/2012/12/26/196680.htmlhttp://www.shnenglu.com/humanchao/comments/196680.htmlhttp://www.shnenglu.com/humanchao/archive/2012/12/26/196680.html#Feedback0http://www.shnenglu.com/humanchao/comments/commentRss/196680.htmlhttp://www.shnenglu.com/humanchao/services/trackbacks/196680.html转自Q?a >http://blog.csdn.net/fuyangchang/article/details/5637464
wiki地址http://en.wikipedia.org/wiki/Hamming_distance

在信息领域,两个长度相等的字W串的v明距L在相同位|上不同的字W的个数Q也是一个字W串替换成另一个字W串需要的替换的次数?/p>

例如Q?/p>

  • "toned" and "roses" is 3.
  • 1011101 and 1001001 is 2.
  • 2173896 and 2233796 is 3.

对于二进制来_h距离的结果相当于 a XOR b l果?的个数?/p>

python代码如下

 

def hamming_distance(s1, s2):

    assert len(s1) == len(s2)

    return sum(ch1 != ch2 for ch1, ch2 in zip(s1, s2))

 

print (hamming_distance("gdad","glas"))

l果?/span>2

 

C语言代码如下

 

unsigned hamdist(unsigned x, unsigned y)

{

  unsigned dist = 0, val = x ^ y;

 

  // Count the number of set bits

  while(val)

  {

    ++dist;

    val &= val - 1;

  }

 

  return dist;

}

 

int main()

{

         unsigned x="abcdcc";

         unsigned y="abccdd";

         unsigned z=hamdist(x,y);

         printf("%d",z);

}



]]>
? 怎样量化评h搜烦引擎的结果质?/title><link>http://www.shnenglu.com/humanchao/archive/2012/12/19/196436.html</link><dc:creator>胡满?/dc:creator><author>胡满?/author><pubDate>Wed, 19 Dec 2012 03:03:00 GMT</pubDate><guid>http://www.shnenglu.com/humanchao/archive/2012/12/19/196436.html</guid><wfw:comment>http://www.shnenglu.com/humanchao/comments/196436.html</wfw:comment><comments>http://www.shnenglu.com/humanchao/archive/2012/12/19/196436.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/humanchao/comments/commentRss/196436.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/humanchao/services/trackbacks/196436.html</trackback:ping><description><![CDATA[<h2>转自Q?a >http://www.infoq.com/cn/articles/cyw-evaluate-seachengine-result-quality</a><br /><br />前言</h2><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">搜烦质量评估是搜索技术研I的基础性工作,也是核心工作之一。评PMetricsQ在搜烦技术研发中扮演着重要角色Q以至于M一U新Ҏ与他们的评h方式是融Z体的?/p><div style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; "><br />搜烦引擎l果的好坏与否,体现在业界所U的在相x(RelevanceQ上。相x的定义包括狭义和广义两斚wQ狭义的解释是:索结果和用户查询的相关程度。而从q义的层面,相关性可以理解ؓ为用h询的l合满意度。直观的来看Q从用户q入搜烦框的那一刻vQ到需求获得满ؓ止,q之间经历的q程顺畅,便P搜烦相关性就好。本文ȝ业界常用的相x评h标和量化评hҎ。供Ҏ感兴的朋友参考?/div><h2>Cranfield评h体系</h2><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">A Cranfield-like approachq个名称来源于英国Cranfield UniversityQ因为在二十世纪五十q代该大学首先提Zq样一套评Ll:由查询样例集、正答案集、评指标构成的完整评测ҎQƈ从此立?#8220;评h”在信息检索研I中的核心地位?/p><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">Cranfield评h体系׃个环节组成:</p><ol style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; "><li>抽取代表性的查询词,l成一个规模适当的集?/li><li>针对查询样例集合Q从索系l的语料库中L对应的结果,q行标注Q通常人工q行Q?/li><li>查询词和带有标注信息的语料库输入检索系l,对系l反馈的索结果,使用预定义好的评仯公式,用数值化的方法来评h索系l结果和标注的理想结果的接近E度</li></ol><h2>查询词集合的选取</h2><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">Cranfield评hpȝ在各大搜索引擎公司内有广泛的应用。具体应用时Q首先需要解决的问题是构造一个测试用查询词集合?/p><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">按照Andrei BroderQ曾在AltaVista/IBM/Yahoo任职Q的研究Q查询词可分?c:dcL询(NavigationalQ、信息类查询(Informational)、事务类查询(Transactional)。对应的比例分别?/p><pre style="overflow: auto; width: 964.25px; padding: 0px 0px 5px; font-size: 12px; line-height: 15px; font-family: 'Courier New', Courier; color: #222222; margin-top: 0px; margin-bottom: 0px; background-color: #fafafa; border: 2px solid #efefef; ">Navigational Q?12.3% Informational Q?62.0% Transactional Q?25.7% </pre><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">Z使得评估W合U上实际情况Q通常查询词集合也会按比例q行选取。通常从线上用LQuery Log文g中自动抽取?/p><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">另外查询集合的构造时Q除了上q查询类型外Q还可以考虑Query的频ơ,对热门queryQ高频查询)、长queryQ中低频Q分别占特定的比例?/p><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">另外Q在抽取QueryӞ往往Query的长短也是一个待考虑的因素。因为短queryQ单term的查询)和长QueryQ多Term的查询)排序法往往会有一些不同?/p><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">构成查询集合后,使用q些查询词,在不同系l(例如Ҏ癑ֺ和GoogleQ或不同技术间Q新旧两套Ranking法的环境)q行搜烦Qƈ对结果进行评分,以决定优劣?/p><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">附图Q对同一QueryQ?#8220;C会保险?#8221;Q各大搜索引擎的l果C意图。下面具体谈谈评分的Ҏ?/p><p style="overflow-x: auto; width: 964.25px; overflow-y: hidden; font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; "><img border="0" _href="img://image1.jpg" _p="true" src="http://www.infoq.com/resource/articles/cyw-evaluate-seachengine-result-quality/zh/resources/image1.jpg" alt="" style="border: 0px; display: block; float: none; margin-left: auto; margin-right: auto; " /></p><p style="overflow-x: auto; width: 964.25px; overflow-y: hidden; font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; "><img border="0" _href="img://image1.jpg" _p="true" src="http://www.infoq.com/resource/articles/cyw-evaluate-seachengine-result-quality/zh/resources/image2.jpg" alt="" style="border: 0px; display: block; float: none; margin-left: auto; margin-right: auto; " /></p><p style="overflow-x: auto; width: 964.25px; overflow-y: hidden; font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; "><img border="0" _href="img://image1.jpg" _p="true" src="http://www.infoq.com/resource/articles/cyw-evaluate-seachengine-result-quality/zh/resources/image3.jpg" alt="" style="border: 0px; display: block; float: none; margin-left: auto; margin-right: auto; " /></p><p style="overflow-x: auto; width: 964.25px; overflow-y: hidden; font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; "><img border="0" _href="img://image1.jpg" _p="true" src="http://www.infoq.com/resource/articles/cyw-evaluate-seachengine-result-quality/zh/resources/image4.jpg" alt="" style="border: 0px; display: block; float: none; margin-left: auto; margin-right: auto; " /></p><p style="overflow-x: auto; width: 964.25px; overflow-y: hidden; font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; "><img border="0" _href="img://image1.jpg" _p="true" src="http://www.infoq.com/resource/articles/cyw-evaluate-seachengine-result-quality/zh/resources/image5.jpg" alt="" style="border: 0px; display: block; float: none; margin-left: auto; margin-right: auto; " /></p><p style="overflow-x: auto; width: 964.25px; overflow-y: hidden; font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; "><img border="0" _href="img://image1.jpg" _p="true" src="http://www.infoq.com/resource/articles/cyw-evaluate-seachengine-result-quality/zh/resources/image6.jpg" alt="" style="border: 0px; display: block; float: none; margin-left: auto; margin-right: auto; " /></p><h2>Precision-recallQ准率-召回率方法)</h2><h3>计算Ҏ</h3><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">信息索领域最qؓ人知的评h标ؓPrecision-RecallQ准率-召回率)Ҏ。该Ҏ从提今已l历半个世纪Q至今在很多搜烦引擎公司的效果评C使用?/p><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">֐思义Q这个方法由准确率和召回率这两个怺兌的统计量构成Q召回率QRecallQ衡量一个查询搜索到所有相x档的能力Q而准率QPrecisionQ衡量搜索系l排除不相关文档的能力。(通俗的解释一下:准确率就是算一你查询得到的结果中有多是靠谱的;而召回率表示所有靠ql果中,有多被你给扑֛来了Q。这两项是评h索效果的最基础指标Q其具体的计方法如下?/p><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">Precision-recallҎ假定对一个给定的查询Q对应一个被索的文集合和一个不相关的文集合。这里相x被假设Z元的Q用数学形式化方法来描述Q则是:</p><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">A表示相关文集合</p><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; "><span style="text-decoration: overline; ">A</span>表示不相关集?/p><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">B表示被检索到的文档集?/p><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; "><span style="text-decoration: overline; ">B</span>表示未被索到的文集?/p><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">则单ơ查询的准确率和召回率可以用下述公式来表达:</p><p style="overflow-x: auto; width: 964.25px; overflow-y: hidden; font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; "><img alt="" src="http://www.infoq.com/resource/articles/cyw-evaluate-seachengine-result-quality/zh/resources/image7.jpg" _href="img://image7.jpg" _p="true" style="border: 0px; " /></p><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">Q运符∩ 表示两个集合的交集。|x|W号表示集合x中的元素数量Q?/p><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">从上面的定义不难看出Q召回率和准率的取D围均在[0,1]之间。那么不难想象,如果q个pȝ扑֛的相兌多,那么召回率越高,如果相关l果全部都给召回了,那么recall此时q?.0?/p><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; "></p><table cellspacing="0" cellpadding="0" border="1" style="color: #000000; font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; text-align: start; background-color: #ffffff; "><tbody><tr><td width="156" valign="top" style="font-size: small; "> </td><td width="156" valign="top" style="font-size: small; "><p align="center">相关?/p></td><td width="156" valign="top" style="font-size: small; "><p align="center">不相?/p></td></tr><tr><td width="156" valign="top" style="font-size: small; "><p align="center">被检索到</p></td><td width="156" valign="top" style="font-size: small; "><p align="center">A∩ B</p></td><td width="156" valign="top" style="font-size: small; "><p align="center"><span style="text-decoration: overline; ">A</span>∩ B</p></td></tr><tr><td width="156" valign="top" style="font-size: small; "><p align="center">未被索到</p></td><td width="156" valign="top" style="font-size: small; "><p align="center">A∩<span style="text-decoration: overline; ">B</span></p></td><td width="156" valign="top" style="font-size: small; "><p align="center"><span style="text-decoration: overline; ">A</span>∩<span style="text-decoration: overline; ">B</span></p></td></tr></tbody></table><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; "></p><h3>Precision-Recall曲线</h3><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">召回率和准确率分别反映了索系l的两个最重要的侧面,而这两个侧面又相互制U。因为大规模数据集合中,如果期望索到更多相关的文,必然需?#8220;攑֮”索标准,因此会导致一些不相关l果淯来,从而准确率受到媄响。类似的Q期望提高准率Q将不相x尽量去除时Q务必要执行?#8220;严格”的检索策略,q样也会使一些相关的文被排除在外,使召回率下降?/p><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">所以ؓ了更清晰的描qC者间的关p,通常我们Precison-Recall用曲U的方式l制出来Q可以简UCؓP-R diagram。常见的形式如下图所C。(通常曲线是一个逐步向下的走势,即随着Recall的提高,Precision逐步降低Q?/p><p style="overflow-x: auto; width: 964.25px; overflow-y: hidden; font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; "><img border="0" _href="img://image1.jpg" _p="true" src="http://www.infoq.com/resource/articles/cyw-evaluate-seachengine-result-quality/zh/resources/image8.jpg" alt="" style="border: 0px; display: block; float: none; margin-left: auto; margin-right: auto; " /></p><h3>P-R的其它Ş?/h3><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">一些特定搜索应用,会更x搜烦l果中错误的l果。例如,搜烦引擎的反作弊pȝQAnti-Spam SystemQ会更关注检索结果中混入了多条作弊l果。学术界把这些错误结果称作假x(False PositiveQ结果,对这些应用,通常选择用虚报率QFalloutQ来l计Q?/p><p style="overflow-x: auto; width: 964.25px; overflow-y: hidden; font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; "><img alt="" src="http://www.infoq.com/resource/articles/cyw-evaluate-seachengine-result-quality/zh/resources/image9.jpg" _href="img://image9.jpg" _p="true" style="border: 0px; " /></p><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">Fallout和Presion本质是完全相同的。只是分别从正反两方面来计算。实际上是P-R的一个变U?/p><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">再回C图,Presion-Recall是一个曲U,用来比较两个Ҏ的效果往往不够直观Q能不能对两者进行综合,直接反映C个数g呢?为此IR学术界提ZF值度量(F -MeasureQ的Ҏ。F-Measure通过Presion和Recall的调和^均数来计,公式为:</p><p style="overflow-x: auto; width: 964.25px; overflow-y: hidden; font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; "><img border="0" _href="img://image1.jpg" _p="true" src="http://www.infoq.com/resource/articles/cyw-evaluate-seachengine-result-quality/zh/resources/image10.jpg" alt="" style="border: 0px; display: block; float: none; margin-left: auto; margin-right: auto; " /></p><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">其中参数λε(0,1)调节pȝ对Precision和Recall的^衡程度。(通常?#955;=0.5Q此?nbsp;<img border="0" _href="img://image1.jpg" _p="true" src="http://www.infoq.com/resource/articles/cyw-evaluate-seachengine-result-quality/zh/resources/image11-1.jpg" alt="" style="border: 0px; " />Q?/p><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">q里使用调和q_数而不是通常的几何^均或术q_Q原因是调和q_数强调较数值的重要性,能敏感的反映数字的变化Q因此更适合用来反映索效果?/p><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">使用F Measure的好处是只需要一个单一的数字就可以ȝpȝ的检索效果,便于比较不同搜烦pȝ的整体效果?/p><h2>P@NҎ</h2><h3>点击因素</h3><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">传统的Precision-Recallq不完全适用Ҏ索引擎的评估Q原因是搜烦引擎用户的点L式有其特D性,包括Q?/p><pre style="overflow: auto; width: 964.25px; padding: 0px 0px 5px; font-size: 12px; line-height: 15px; font-family: 'Courier New', Courier; color: #222222; margin-top: 0px; margin-bottom: 0px; background-color: #fafafa; border: 2px solid #efefef; ">A 60-65%的查询点M名列搜烦l果?0条的|页Q? B 20-25%的h会考虑点击名列11?0的网; C 仅有3-4%的会点击名列搜烦l果中列W?1到第30名的|页 </pre><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">也就是说Q绝大部分用h不愿意翻去看搜索引擎给出的后面的结果?/p><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">而即使在搜烦l果的首(通常列出的是?0条结果)Q用L点击行ؓ也很有意思,我们通过下面的Google点击热图QHeat MapQ来观察Q这个热囑֜二维搜烦l果上通过光谱来Ş象的表达不同位置用户的点ȝ度。颜色约靠近U色表示点击强度高Q:</p><p style="overflow-x: auto; width: 964.25px; overflow-y: hidden; font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; "><img border="0" _href="img://image1.jpg" _p="true" src="http://www.infoq.com/resource/articles/cyw-evaluate-seachengine-result-quality/zh/resources/image12.jpg" alt="" style="border: 0px; display: block; float: none; margin-left: auto; margin-right: auto; " /></p><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">从图中可以看出,搜烦l果的前3条吸引了大量的点击,属于热度最高的部分。也是_Ҏ苏引擎来_最前的几条l果是最关键的,军_了用L满意E度?/p><p style="overflow-x: auto; width: 964.25px; overflow-y: hidden; font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; "><img border="0" _href="img://image1.jpg" _p="true" src="http://www.infoq.com/resource/articles/cyw-evaluate-seachengine-result-quality/zh/resources/image13.jpg" alt="" style="border: 0px; display: block; float: none; margin-left: auto; margin-right: auto; " /></p><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">康乃大学的研究人员通过eye tracking实验获得了更为精的Google搜烦l果的用戯为分析图。从q张图中可以看出Q第一条结果获得了56.38%的搜索流量,W二条和W三条结果的排名依次降低Q但q低于排名第一的结果。前三条l果的点L例大Uؓ11:3:2 。而前三条l果的ȝd乎分了搜烦量?0%?/p><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">另外的一些有的l论是,点击量ƈ不是按照序依次递减的。排名第七位获得的点L最的Q原因可能在于用户在览q程中下拉页面到底部Q这时候就只显C最后三位排名网站,W七名便Ҏ被忽略。而首屏最后一个结果获得的注意力(2.55Q是大于倒数W二位的(1.45)Q原因是用户在翻前Q对最后一条结果印象相对较深。搜索结果页面第二页排名W一的网(xL?1位的l果Q所获得的点d有首|名第十网站的40%Q与首页的第一条结果相比,更是只有?/60?/100的点击量?/p><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">因此在量化评估搜索引擎的效果Ӟ往往需要根据以上搜索用L行ؓ特点Q进行针Ҏ的设计?/p><h3>P@N的计方?/h3><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">P@N本n是Precision@N的简Uͼ指的是对特定的查询,考虑位置因素Q检前N条结果的准确率。例如对单次搜烦的结果中?,如果?ؓ相关文Q则P@5 = 4/5 = 0.8 ?/p><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">试通常会用一个查询集合(按照前文所q方法构造)Q包含若q条不同的查询词Q在实际使用P@Nq行评估Ӟ通常使用所有查询的P@N数据Q计算术^均|用来评判该系l的整体搜烦l果质量?/p><h3>N的选取</h3><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">对用h_通常只关注搜索结果最前若q条l果Q因此通常搜烦引擎的效果评估只x?、或者前3l果Q所以我们常用的N取gؓP@3或P@5{?/p><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">对一些特定类型的查询应用Q如dcȝ查询QNavigational SearchQ,׃目标l果极ؓ明确Q因此在评估Ӟ会选择N=1Q即使用P@1Q。D个例子来_搜烦“新浪|?#8221;、或“新浪首页”Q如果首条结果不?新浪|(urlQ?a style="color: #0b59b2; ">www.sina.com.cn</a>Q,则直接判该次查询_ֺ不满需求,即P@1=0</p><h2>MRR</h2><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">上述的P@NҎQ易于计和理解。但l心的读者一定会发现问题Q就是在前Nl果中,排序W?位和WN位的l果Q对准确率的影响是一L。但实际情况是,搜烦引擎的评h和排序位|极为相关的。即排第一的结果错误,和第10位的l果错误Q其严重E度有天壤之别。因此在评hpȝ中,需要引入位|这个因素?/p><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">MRR是^均排序倒数QMean Reciprocal RankQ的UͼMRRҎ主要用于dcL索(Navigational SearchQ或问答cL索(Question AnsweringQ,q些索方法只需要一个相x,对召回率不敏感,而是更关注搜索引擎检索到的相x档是否排在结果列表的前面。MRRҎ首先计算每一个查询的W一个相x档位|的倒数Q然后将所有倒数值求q_。例如一个包含三个查询词的测试集Q前5l果分别为:</p><pre style="overflow: auto; width: 964.25px; padding: 0px 0px 5px; font-size: 12px; line-height: 15px; font-family: 'Courier New', Courier; color: #222222; margin-top: 0px; margin-bottom: 0px; background-color: #fafafa; border: 2px solid #efefef; ">查询一l果Q?.AN 2.AR 3.AN 4.AN 5.AR 查询二结果:1.AN 2.AR 3.AR 4.AR 5.AN 查询三结果:1.AR 2.AN 3.AN 4.AN 5.AR </pre><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">其中AN表示不相关结果,AR表示相关l果。那么第一个查询的排序倒数QReciprocal RankQRR<sub>1</sub> = 1/2=0.5 Q第二个l果RR<sub>2</sub> = 1/2 = 0.5 Q?注意倒数的g变,即查询二获得的相关l果更多。同理,RR<sub>3</sub>= 1/1 = 1?对于q个试集合Q最lMRR=QRR<sub>1</sub>+RR<sub>2</sub>+RR<sub>3</sub>Q? 3 = 0.67</p><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">然而对大部分检索应用来_只有一条结果无法满需求,对这U情况,需要更合适的Ҏ来计效果,其中最常用的是下述MAPҎ?/p><h2>MAP</h2><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">MAPҎ是Mean Average PrecisonQ即q_准确率法的简U。其定义是求每个相关文索出后的准确率的q_|即Average PrecisionQ的术q_|MeanQ。这里对准确率求了两ơ^均,因此UCؓMean Average Precision。(注:没叫Average Average Precision一是因为难听,二是因ؓ无法区分两次q_的意义)</p><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">MAP 是反映系l在全部相关文上性能的单值指标。系l检索出来的相关文靠?rank 高)QMAP应该越高。如果系l没有返回相x档,则准率默认??/p><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">例如Q假设有两个主题Q?/p><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">主题1?个相关网,主题2?个相关网c?/p><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">某系l对于主?索出4个相关网,其rank分别?, 2, 4, 7Q?/p><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">对于主题2索出3个相关网,其rank分别?,3,5?/p><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">对于主题1Q^均准率MAP计算公式为:</p><pre style="overflow: auto; width: 964.25px; padding: 0px 0px 5px; font-size: 12px; line-height: 15px; font-family: 'Courier New', Courier; color: #222222; margin-top: 0px; margin-bottom: 0px; background-color: #fafafa; border: 2px solid #efefef; ">(1/1+2/2+3/4+4/7)/4=0.83?</pre><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">对于主题2Q^均准率MAP计算公式为:</p><pre style="overflow: auto; width: 964.25px; padding: 0px 0px 5px; font-size: 12px; line-height: 15px; font-family: 'Courier New', Courier; color: #222222; margin-top: 0px; margin-bottom: 0px; background-color: #fafafa; border: 2px solid #efefef; ">(1/1+2/3+3/5+0+0)/5=0.45?</pre><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">则MAP= (0.83+0.45)/2=0.64?#8221;</p><h2>DCGҎ</h2><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">DCG是英文Discounted cumulative gain的简Uͼ中文可翻译ؓ“折扣增益?#8221;。DCGҎ的基本思想是:</p><ol style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; "><li>每条l果的相x分{来衡?/li><li>考虑l果所在的位置Q位|越靠前的则重要E度高</li><li>{高(卛_l果Q的l果位置靠前则值应该越高,否则l予惩罚</li></ol><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">我们首先来看W一条:相关性分U。这里比计算Precision时简单统?#8220;准确”?#8220;不准?#8221;要更为精l。我们可以将l果l分为多个等U。比如常用的3U:GoodQ好Q、FairQ一般)、BadQ差Q。对应的分值rel为:Good:3 / Fair:2 / Bad:1 。一些更为细致的评估使用5U分cLQVery GoodQ明昑֥Q、GoodQ好Q、FairQ一般)、BadQ差Q、Very BadQ明昑ַQ,可以对应分值rel讄为:Very Good:2 / Good:1 / Fair:0 / Bad:-1 / Very Bad: -2</p><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">评判l果的标准可以根据具体的应用来确定,Very Good通常是指l果的主题完全相养Iq且|页内容丰富、质量很高。而具体到每条</p><p style="overflow-x: auto; width: 964.25px; overflow-y: hidden; font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; "><img border="0" _href="img://image1.jpg" _p="true" src="http://www.infoq.com/resource/articles/cyw-evaluate-seachengine-result-quality/zh/resources/image14.jpg" alt="" style="border: 0px; display: block; float: none; margin-left: auto; margin-right: auto; " /></p><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">DCG的计公式ƈ不唯一Q理Z只要求对数折扣因子的qx性。我个h认ؓ下面的DCG公式更合理,了相x,W??条结果的折扣pL也更合理Q?/p><p style="overflow-x: auto; width: 964.25px; overflow-y: hidden; font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; "><img border="0" _href="img://image1.jpg" _p="true" src="http://www.infoq.com/resource/articles/cyw-evaluate-seachengine-result-quality/zh/resources/image15.jpg" alt="" style="border: 0px; display: block; float: none; margin-left: auto; margin-right: auto; " /></p><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">此时DCG?个位|上l果的折扣因子(Discount factorQ数gؓQ?/p><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; "></p><table cellspacing="0" cellpadding="0" border="1" style="color: #000000; font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; text-align: start; background-color: #ffffff; "><tbody><tr><td width="189" valign="top" style="font-size: small; "><p align="center">i</p></td><td width="189" valign="top" style="font-size: small; "><p align="center">log<sub>2</sub> (i+1)</p></td><td width="189" valign="top" style="font-size: small; "><p align="center">1/log<sub>2</sub> (i+1)</p></td></tr><tr><td width="189" valign="top" style="font-size: small; "><p align="center">1</p></td><td width="189" valign="top" style="font-size: small; "><p align="center">1</p></td><td width="189" valign="top" style="font-size: small; "><p align="center">1</p></td></tr><tr><td width="189" valign="top" style="font-size: small; "><p align="center">2</p></td><td width="189" valign="top" style="font-size: small; "><p align="center">1.59</p></td><td width="189" valign="top" style="font-size: small; "><p align="center">0.63</p></td></tr><tr><td width="189" valign="top" style="font-size: small; "><p align="center">3</p></td><td width="189" valign="top" style="font-size: small; "><p align="center">2</p></td><td width="189" valign="top" style="font-size: small; "><p align="center">0.5</p></td></tr><tr><td width="189" valign="top" style="font-size: small; "><p align="center">4</p></td><td width="189" valign="top" style="font-size: small; "><p align="center">2.32</p></td><td width="189" valign="top" style="font-size: small; "><p align="center">0.43</p></td></tr></tbody></table><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; "></p><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">取以2为底的logg来自于经验公式,q不存在理论上的依据。实际上QLog的基数可以根据^滑的需求进行修改,当加大数值时Q例如用log<sub>5</sub> 代替log<sub>2</sub>Q,折扣因子降低更ؓq速,此时了前面结果的权重?/p><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">Z便于不同cd的queryl果之间横向比较Q以DCG为基Q一些评Ll还对DCGq行了归一Q这些方法统UCؓnDCGQ即 normalize DCGQ。最常用的计方法是通过除以每一个查询的理想值iDCGQideal DCGQ来q行归一Q公式ؓQ?/p><p style="overflow-x: auto; width: 964.25px; overflow-y: hidden; font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; "><img border="0" _href="img://image1.jpg" _p="true" src="http://www.infoq.com/resource/articles/cyw-evaluate-seachengine-result-quality/zh/resources/image16.jpg" alt="" style="border: 0px; display: block; float: none; margin-left: auto; margin-right: auto; " /></p><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">求nDCG需要标定出理想情况的iDCGQ实际操作的时候是异常困难的,因ؓ每个人对“最好的l果”理解往往各不相同Q从量数据里选出最优结果是很困隄dQ但是比较两l结果哪个更好通常更容易,所以实践应用中Q通常选择l果Ҏ的方法进行评估?/p><h2>怎样实现自动化的评估Q?/h2><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">以上所介绍的搜索引擎量化评估指标,在Cranfield评估框架QCranfield Evaluation FrameworkQ中被广泛用。业界知名的TRECQ文本信息检索会议)׃直基于此cL法组l信息检索评和技术交。除了TREC外,一些针对不同应用设计的Cranfield评测论坛也在q行q行Q如 NTCIR、IREX{)?/p><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">但Cranfield评估框架存在的问题是查询样例集合的标注上。利用手工标注答案的方式q行|络信息索的评h是一个既耗费人力、又耗费旉的过E,只有数大公司能够用。ƈ且由于搜索引擎算法改q、运营维护的需要,索效果评价反馈的旉需要尽量羃短,因此自动化的评测ҎҎ高评估效率十分重要。最常用的自动评估方法是A/B testingpȝ?/p><h3>A/B Testing</h3><p style="overflow-x: auto; width: 964.25px; overflow-y: hidden; font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; "><img border="0" _href="img://image1.jpg" _p="true" src="http://www.infoq.com/resource/articles/cyw-evaluate-seachengine-result-quality/zh/resources/image17.jpg" alt="" style="border: 0px; display: block; float: none; margin-left: auto; margin-right: auto; " /></p><p align="center" style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; "><strong>A/B Testingpȝ</strong></p><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">A/B testingpȝ在用h索时Q由pȝ来自动决定用L分组PBucket idQ,通过自动抽取量导入不同分支Q得相应分l的用户看到的是不同产品版本Q或不同搜烦引擎Q提供的l果。用户在不同版本产品下的行ؓ被记录下来Q这些行为数据通过数据分析形成一pd指标Q而通过q些指标的比较,最后就形成了各版本之间C孰劣的结论?/p><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">在指标计时Q又可细分ؓ两种ҎQ一U是Z专家评分的方法;一U是Z点击l计的方法?/p><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">专家评分的方法通常由搜索核心技术研发和产品人员来进行,Ҏ预先讑֮的标准对A、B两套环境的结果给予评分,获取每个Query的结果对比,q根据nDCG{方法计整体质量?/p><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">点击评分有更高的自动化程度,q里使用了一个假设:同样的排序位|,点击数量多的l果质量优于点击数量的l果。(即A2表示A试环境W?条结果,如果A2 > B2Q则表示A2质量更好Q。通俗的说Q相信群众(因ؓ众的眼睛是雪亮的)。在q个假设前提下,我们可以A/B环境前N条结果的点击率自动映ؓ评分Q通过l计大量的Query点击l果Q可以获得可靠的评分Ҏ?/p><h3>Interleaving Testing</h3><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">另外2003q由Thorsten Joachims {h提出的Interleaving testingҎ也被q泛使用。该Ҏ设计了一个元搜烦引擎Q用戯入查询词后,查询词在几个著名搜索引擎中的查询结果随机؜合反馈给用户Qƈ攉随后用户的结果点击行Z息.Ҏ用户不同的点d֐性,可以判断搜索引擎返回结果的优劣Q?/p><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">如下图所C,算法A和B的结果交叉放|,q分量q行试Q记录用LM息。根据点d布来判断A和B环境的优劣?/p><p style="overflow-x: auto; width: 964.25px; overflow-y: hidden; font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; "><img border="0" _href="img://image1.jpg" _p="true" src="http://www.infoq.com/resource/articles/cyw-evaluate-seachengine-result-quality/zh/resources/image18.jpg" alt="" style="border: 0px; display: block; float: none; margin-left: auto; margin-right: auto; " /></p><p align="center" style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; "><strong>Interleaving Testing评估Ҏ</strong></p><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">Joachims同时证明了Interleaving Testing评hҎ与传lCranfield评hҎ的结果具有较高的相关性。由于记录用户选择索结果的行ؓ是一个不耗费人力的过E,因此可以便捷的实现自动化的搜索效果评估?/p><h2>ȝ</h2><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">没有评估没有进?#8212;—Ҏ索效果的量化评测Q目的是准确的找出现有搜索系l的不Q没有哪个搜索系l是完美的)Q进而一步一个脚印对法、系l进行改q。本文ؓ大家ȝ了常用的评h框架和评h标。这些技术像一把把子Q度量着搜烦技术每一ơ前q的距离?/p><hr style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; " /><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">感谢<a style="color: #0b59b2; ">张凯?/a>?本文的审校?/p><p style="font-family: Lucida, 'Lucida Grande', Tahoma, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; ">lInfoQ中文站投E或者参与内容翻译工作,请邮件至<a href="mailto:editors@cn.infoq.com" style="color: #0b59b2; ">editors@cn.infoq.com</a>。也Ƣ迎大家加入?a target="_blank" style="color: #0b59b2; ">InfoQ中文站用戯论组</a>中与我们的编辑和其他读?朋友交流?/p><img src ="http://www.shnenglu.com/humanchao/aggbug/196436.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/humanchao/" target="_blank">胡满?/a> 2012-12-19 11:03 <a href="http://www.shnenglu.com/humanchao/archive/2012/12/19/196436.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.shnenglu.com/" title="精品视频久久久久">精品视频久久久久</a> <div class="friend-links"> </div> </div> </footer> <a href="http://www.zzrich.cn" target="_blank">ŷþþƷһcƬƬ</a>| <a href="http://www.pynov.cn" target="_blank">91þۺ</a>| <a href="http://www.tst5.cn" target="_blank">99þù뾫Ʒ</a>| <a href="http://www.shoucunshiyuan.cn" target="_blank">ƷŮ߳׾þþ</a>| <a href="http://www.rcjmwj.com.cn" target="_blank">þþþһvr</a>| <a href="http://www.udyq.cn" target="_blank">þþþһ</a>| <a href="http://www.tjppfdm.cn" target="_blank">޾ƷþþӰԺӰƬ </a>| <a href="http://www.xxysw.com.cn" target="_blank">ŷղþ99</a>| <a href="http://www.xuzhou86.cn" target="_blank">99þó˹Ʒ</a>| <a href="http://www.sxjax.cn" target="_blank">Ʒþ</a>| <a href="http://www.taokecai.cn" target="_blank">ҹҹݺݾþö</a>| <a href="http://www.hnwjzd.com.cn" target="_blank">þþƷ2020</a>| <a href="http://www.rezhei.cn" target="_blank">ȫɫƴɫƬѾþþ</a>| <a href="http://www.rnif.cn" target="_blank">Ʒþþһ</a>| <a href="http://www.svelan.cn" target="_blank">aëƬþ</a>| <a href="http://www.woool-woool.com.cn" target="_blank">ձvaҹĻþ</a>| <a href="http://www.htja.com.cn" target="_blank">þþþþþþþþþþþ</a>| <a href="http://www.bb2y.cn" target="_blank">99ƷþþƷ</a>| <a href="http://www.inconfont.cn" target="_blank">ڵСþþþþþ </a>| <a href="http://www.zghart.cn" target="_blank">ƷþþþĻձ</a>| <a href="http://www.webfi.cn" target="_blank">þþƷŮAV</a>| <a href="http://www.gxyy.org.cn" target="_blank">99þ뾫Ʒϵ</a>| <a href="http://www.wrene.com.cn" target="_blank">ƷŮþþþAV</a>| <a href="http://www.hilxb.cn" target="_blank">þ¶ݺɫ</a>| <a href="http://www.qunfazongzhan.cn" target="_blank">91Ʒþþþþ</a>| <a href="http://www.vqsg.cn" target="_blank">ձþþվ</a>| <a href="http://www.pbkf.net.cn" target="_blank">þ޹ӰԺվ</a>| <a href="http://www.robot0.cn" target="_blank">þùһ</a>| <a href="http://www.veixzew.cn" target="_blank">91Ʒþþþþio</a>| <a href="http://www.xahyjtls.cn" target="_blank">þоƷƵ</a>| <a href="http://www.139shops.cn" target="_blank">þü޾Ʒ?V</a>| <a href="http://www.zaggaa.cn" target="_blank">þۺۺϾþ97ɫ</a>| <a href="http://www.huiju365.cn" target="_blank">ھƷþþþӰԺ</a>| <a href="http://www.the-lighting.com.cn" target="_blank">޾Ʒþþþϼ</a>| <a href="http://www.gold160.cn" target="_blank">ƷŮ߳׾þþ </a>| <a href="http://www.madgou.cn" target="_blank">91Ʒ91Ⱦþþþø</a>| <a href="http://www.palmback.cn" target="_blank">þҹɫƷ</a>| <a href="http://www.szbomeidisplays.cn" target="_blank">ѾƷպȾþ</a>| <a href="http://www.fuxingjiguang.cn" target="_blank">ձ޿һþ</a>| <a href="http://www.kovnxs.cn" target="_blank">þþƷŷƬ</a>| <a href="http://www.25552l.cn" target="_blank">þþþþþþþþѾƷ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>