OIERS 必读:计算机科学趋势之我谈

5个4000比特大状态置换算法的设计与分析 下面是 5 个概念性、实验性的 4000 位可逆置换设计。它们都保证是双射,但未经过密码分析,不可直接用于生产系统。风格分别覆盖:三维 SPN、Feistel、可逆元胞自动机、ARX、宽轨迹/Keccak 式结构。 这 5 个设计分别代表了 SPN、Feistel、元胞自动机、ARX、宽轨迹 Keccak 五种不同风格,覆盖了主流大状态置换的构造思路。再次强调:它们只是实验性概念,若要用于实际协议,必须经过严格安全性分析。 阅读详情

OIERS 必读:计算机科学趋势之我谈  

常有热血青年问我计算机科学还有啥搞头。

首先我们回顾一下计算机科学的“机械黄金时代”——5/60 年代。这个年代是研究“简单机械”数学对象的淘金时代。这些数学对象包括:字符串,数列,集合,树,图等等。它们的特点是:1. 最简单、最机械,就像数学里的"一元一次方程"、物理里的“定滑轮动滑轮”一样初等。同时这个时代的大背景是应用数学的大发展(冷战时代两个阵营要拼谁的军事和生产活动达到最优化),因此 2. 这些对象不同于其他纯数学的基本对象在于他们有强烈的现实应用性。有了什么样的研究对象就决定了会有什么样的研究成果(算法/方法/原理/应用)。比如,如果研究对象是字符串,就很容易发现我们有实际需求的操作有 压缩、加密、查找子串 等,于是大浪淘沙,我们有了 ZIP, RSA, KMP 这些堪称经典的结果;而那些有用但没有有效解法的问题,几乎都被证明是 NPC 的。。。这样,走得通的路都走通了,走不通的路都被证明是走不通的。。

除了简单机械对象的相关算法设计外,过去几十年同时也是人工智能基本问题的黄金时代。这些基本成果在它们所在体系中的“根本性”就像牛顿的成果在经典力学体系中的“根本性”一样,是后人无法再超越的。。。人工智能的一个目的是对“模糊”(非形式化)信息"形式"的理解,也就是说我们表达的内容可以有各种表现形式:自然语言文本,语音,图像,影像。对他们的分析(analysis)往往比合成(synthesis)要困难。我举一个非常典型的例子:语音识别(speech recognition)是对语音数据的分析,语音合成(speech synthesis)是合成,后者的实际成功大得多。要分析我们就不可避免要知道牵涉到的背景知识(分为“规则 (rules)”和“案例 (cases/samples/examples)”两种,一个案例就是一个特殊的经验,可以看作一个适用范围最小的规则),还有如何把这些背景知识用于我们要识别的数据,这又分为两种态度:按逻辑推理 (logic-based reasoning) 和不要求有严密逻辑推理关系的模糊式、统计式联系(statistical methods 或叫 connectivism,就是把“因”和“果”用经验联系起来(知其往往然)而不是用逻辑推理关系联系起来(知其所以然)),比如初中里的几何证明就是严密的逻辑推理,而 Google 仅仅找到那些紧密出现你的 keywords 的文章片断就是统计式、模糊式处理,就像总设计师说的“宜粗不宜细”。根据具体问题的具体条件,两种态度各有所长。人工智能的另一个目的是对信息“内容” 的处理和再创造。前面我们说的是把同一个内容的数据从一种形式变到另一种形式,比如把一句话从语音形式变到文本形式、把一句话从中文翻译到英文,其实内容不变。那么对内容本身我们可以做什么有用的操作呢?一方面,我们可以把内容表示成一种形式化的知识表示,用上面提到的 logic-based reasoning 来推出新的有用结论。这种操作的局限性在于计算机只能用我们给出的知识反复演绎;尽管我们可以加入统计性的因素让推理更灵活(同时降低了结果的准确性),但仍然受限于有限的形式化知识。另一方面,我们可以不拘泥于形式化的知识表示与推理,而是让计算机和人混和起来思考问题。这时,我们不要求概念和概念之间的可能关系被完全形式化,但我们往往还是要求“一个概念只有一个命名”。典型的这种知识表示就是 Wikipedia,它的每个文章都是一个概念,有唯一的命名(或明确声明多个命名等价),而文章之间的超链接(不明确表示的关系)使 Wikipedia 成为一个概念的网络。由于概念之间关系的不明确,我们不说它是一个语义网络(semantic network,知识表示的最重要方法,与 first-order logic、frames 等价),而是一个概念网络(ontology,即一些概念的集合,每个概念都有严格的命名)。概念命名形式化而概念关系非形式化的本性决定了这种东西可以让人和计算机相结合完成某些任务。比如,我心里有一个 idea X,我想知道它是否已经被别人提出过了,如果被别人提出过了那么它的命名是什么。这是一个很有实际意义的问题,比如申请专利之前你要查找前人是否已经公布过类似 idea,比如你不知道一个概念在英语中如何表达(如果这个概念在你的母语中没有一个专门的术语 A 或者虽然有 A 但是你的双语词典不能为你直接建立 A 到英语对应表达 A' 的映射。。。)。此时我们就可以基于一个 ontology 如 Wikipedia 来间接寻找 X 的所在。例如我们要找“热插拔”的英文说法(假设不存在“热插拔”的中文条目),我们可以先想象一下它有什么特别相关的概念,我们想到“即插即用” (plug and play),因为这两个概念是可比较的两种硬件安装规格。于是我们先进入英文 Wikipedia 条目“plug and play”: http://en.wikipedia.org/wiki/Plug_and_play 然后我们发现该文章中比较了即插即用和一个所谓“true hot swapping”的相同和不同。通过文章对这个 hot swapping 的描述,我们有很大把握认为它就是我们要找的“热插拔”。我们可以进一步用这个关键词在其他文献中确定它就是热插拔。这个问题跟查双语字典正好相反,双语字典是你给出一个已知的母语术语 A,它告诉你 A 对应的未知的外语术语 A' 以及 A' 的未知的定义 Def_A',而我们刚才说的这个问题是已知一个概念的定义 Def_X,如何知道这个概念在某个语言中的的命名 Name_X。这又叫 reverse dictionary lookup.

综合以上两段,我们想想我们当代应该研究什么。显然我们不应该再去研究简单机械对象,那是口枯井(当然如果你不以“有实际用途”为导向去选择研究对象,你完全可以去研究 100 个方块组成的俄罗斯方块图形有几种(这个美国人 60 年代也研究过了,呵呵)、人为设计一个类似五子棋的棋类游戏然后研究其制胜策略(这就是所谓趣味数学成果,因为研究对象可以无穷制造,所以总有研究的空间;这也是为什么某数学家(好像是丘成桐)教育我们要研究自然界的数学模型而不是那些人工制造出来的数学对象。就算 Knuth 这种至少有 KMP 这样经典的有用简单机械成果的大牛,也在 70 年代百无聊赖之际研究过游戏“大智之人”(Mastermind,又叫“猜数字”);而且比尔盖茨在 70 年代哈佛退学以后还兴致勃勃地研究过翻烧饼的组合数学问题 [1][2];MIT 有个很年轻的加拿大计算机教授 Erik Demaine,现在华人学者热衷于提起他,他做的最有特色的研究之一是折纸中的计算机学问。。))。就连在简单机械算法世界里浸淫了几十年的 Knuth 也在 2001 年接受采访说:“如果。。。人生从头来过,我现在愿意做一个研究机器人学或生化的研究生。。。理论计算机科学。。。经过五十年的爆炸性发展后,很难想象还有多少发展空间。我不认为现在对以前的经典结果作小的优化有多大意义。当然我不能完全否定计算机科学继续发展的可能性,但这种可能性跟生物学是无法相提并论的。。。计算机科学经过五十年就发展殆尽,而生物学却很容易就提供给我们足够研究 500 年的问题,两者差距是如此巨大。”[10][12] 有人问,那么计算机科学不是还剩那个圣杯——“P?=NP”么?让我们看看 Knuth 2002 年在奥斯陆大学的“All Questions Answered”演讲中是怎么说的:“。。。就算 P==NP,仅仅知道一个问题有多项式时间算法是没有实际意义的,因为那个指数可能大得超过计算能力。因此也许我们从一开始就不应该提出 P?=NP 这个糟糕的问题。”[11]在这次演讲中 Knuth 还特别强调要“阅读大师的思想” (Read the masters)。在 2001 年慕尼黑大学另一次同名的演讲[12]中,Knuth 干脆认为“P?=NP 可能是 Godel 所说的‘不可证明的定理’之一”。

所以我们可以想到,我们当代要研究的对象必然是更复杂的,或者机械的数学世界以外的活生生的现实问题。比如在劳动人民的生活中,自然语言是全球化背景下一个突出的问题,同时也是足够复杂的对象;比如股票市场的预测(按道理说这需要计算机知道足够多的背景知识和内幕消息,因此我对那些统计学者用统计过分简化整个事情是非常鄙视的);比如宏观经济/社会;比如自然科学如生物、纳米里的复杂结构和功能;比如复杂工程学如导弹防御系统、机器人、航天;比如经济中的供求双方信息不对称问题(你想找某个很窄的领域的知识或真人专家,你如何跟这个知识或专家接上头?特别是当这个“很窄的领域”尚没有特定学名时?这又回归到了我上面说的 reverse dictionary lookup 问题:在对应的 Wikipedia 页面上留下相关知识和真人专家的联系方式。而作为“卖方”,一个真人专家如何拓展他的业务范围?他可以观察自己当前领域周边的 wiki 文章是否也可以让自己去“坐堂”;一个自主学习的学生如何决定自己下一步学什么/研究什么?也是同样道理。);比如让计算机半自动的穷举、推理、归纳、联想出新的创新机会。


  yaoziyuan(yaozy) ( ) 信誉:98    Blog  2006-8-5 3:06:27  得分: 0 
 
 
  
还有一个关键的非技术问题,就是作为学科竞赛中的佼佼者或者感兴趣的小有所成者,如何展开研究?为什么中国出了那么多大牛前辈却少有知名的研究?第一, OI 中获取的知识就是上面说的“简单机械世界中的对象及其操作”。OIERS 不管是中级还是顶级选手,主要擅长的仅限于此,当然我们决不能否定我们向其他空间拓展的潜力。而且我认为大多数 OIERS 都有作出很好研究的潜力。第二,研究的过程不是工程开发或生产,没有固定日程安排,而是一种商业投机行为,因此需要极大的自由、自主权。投机能力可以通过考虑做个商业产品来锻炼。一个对机会主义、个人主义、自由主义没有很好的理论觉悟和运用的人,或者一个受到现实中给定学习方向、研究方向、研究日程所桎梏的人,作不出好研究。为此我专门另起一段。第三,要培养很好的哲学思辩能力,特别是归类、归纳、观察能力,而不仅仅是死板的推理能力。我突然想,如果我们去看看大学的哲学教材,看看它如何把一套歪理邪说讲得头头是道、自圆其说,也是一种哲学思辩能力。培养哲学能力的方法可以是常常思考一些自然的、社会的、没有严格公理的现象,比如自然语言的本质表示,比如民族主义和自由主义本质是什么 [3],比如当代世界的经济格局以及其背后的技术决定因素。要博学,要有广泛的兴趣,要喜欢百科全书,接受通识、开放的教育而不是应试教育。推理能力在一个基础已经形式化的封闭体系如纯数学里是很重要的,而观察、归类、归纳能力则有助于我们研究开放性的事物,比如我现在已经有了一个点子,但是我发现别人已经提出过了,就这个点子本身其内在关系和本质的研究已经很成熟,已经自成一个独立的系统,那么我如何去发现这个系统做不到、解释不到的现象,从而扩展这个系统?电影《美丽心灵》里就有经典的例子:亚当斯密已经建立了零和博弈的经济学理论,这个理论已经自成系统,甚至已经被形式化,如果你仅仅用逻辑推理想有所新发现,你必然会在这个封闭的体系里打转转。如果你想有所创新,就必然要到盒子外面去想(think outside the box),这就需要观察该系统无法解释的现象,并归类、归纳出新的规律,于是纳什才归纳出“共赢”现象的博弈规律,跳出了亚当斯密设计的盒子。从盒子外面看,亚当斯密的盒子就成了“incomplete”的了。还有一种研究方法叫“没事找事”,就是故意(而且是先于经验观察)跟前人唱反调,比如非欧几何。要善于观察善于表达,比如看看我是怎么写这篇文章并把我要说的内容归类成段的。哲学是凌驾于死板推理的,是一切思想成果的背后机制,哪怕是数学研究也是要有哲学领悟能力的。我国的应试教育强调服从既定方针(就像一个体系里的公理和定理)式的推理能力,打击了我们自由观察、探索、思考体制外的外层空间现象的积极性。而西方由于崇尚自由主义,勇于探索现有知识体系以外的“非理性世界”,做成败莫测的冒险,甚至敢于相信有 beyond 我们观察能力的 God 的存在,有了这种对哲学的坚持,才不断从盒子内的科学走向盒子外的科学。第四,以往的顶级 OIERS,由于一没有投机的经验和物质回报的滋润(最近听说一句话叫“钱是英雄胆”)、二没有自由探索 自主研究方法 的机会(IOI 完了往往上国内大学,学的是古人的最终思想产品(end product)如微积分和简单机械算法而没有学到或者自己悟到思想不断向外发展的哲学和方法论(方法论就是某个哲学思想的具体可操作化),他们高中被高考或 IOI 所驱使、大学本科被出国读研究生所驱使、读研究生时被研究生文凭所驱使,内心并没有时间真正去长期观察盒子外的东西,而到了公司里,又被工作业绩和生存压力所驱使。)因此一直无法改变“大家都不知道怎么研究”的传统、三是某些人本来就没有兴趣投资时间去观察没有把握的事物——他们喜欢走保守稳定的职业生涯(如 CS -> Data Mining -> 搜索引擎公司 -> Statistics -> Accounting -> 华尔街),很大程度上是因为我们的应试教育鼓励了保守稳定的态度——针对我给你的价值观(考试大纲)优化你自己,你就能得最高分。所以,不要指望那些愿意为高分而努力的人会平白无故就突然放弃“稳定压倒一切”去中途追求他们认为风险很大的“改革开放”。有人问,你说的这两种态度(稳定压倒一切 和冒进),难道真的是水火不容、鱼与熊掌不可兼得?非也。关键是:循序渐进,逐步提高投资和回报的高度。首先建议学生们在寒暑假做个信息技术产品(软件、网站)或服务(服务不能太花时间,否则扰乱你的长期研究,最好是时间由你选择的 freelance (打零工)),取得经济独立,然后就能投入自己真正感兴趣的追求。有人还要问“文凭怎么办”。确实,engineering degree 是大多数人出国、工作的必备,这一点我以后再写文章讨论。如果你没有魄力,权宜之计是,争取到香港等地的大学学习,因为虽然都是 degree,过程不同:一个是稳定压倒一切推着你走,一个自由度更大吧。如果你有魄力,且不去说 Bill Gates,就看看我们熟悉的 BitTorrent 的发明者 Bram Cohen 的故事[4]吧。相似的现代故事我还能举出一些,比如 Google 的 Glen Murphy,他的 Blogger Web Comments 表现了一个很有内涵的应用。如果我大张旗鼓的鼓吹 no degree,很多人肯定不认同。但是据我了解,至少在计算机科学和应用数学领域,如果你想做纳什,你必须学着他说“Class will dull your mind, destroy the potential for authentic creativity.”某一次我代一个信息学奥林匹克国际集训队的队员到 comp.theory 上问作业[5],结果被上面的美国教授们骂得狗血喷头,什么“自己不好好学,到这里来问”云云,美国的计算机大学教育之严格(=不自由)可见一斑。这也难怪 ACM 近年颁发的图灵奖是一年比一年烂。我看过四年的 ACM TechNews [6],发现美国主流计算机学术界总是沉湎于旧的知识体系不能自拔,总是围绕着 security 等陈旧的话题,或者是 voting machines, RFID 这些所谓新潮的浅薄话题,目的只有一个:好捞联邦政府的研究拨款。所以我最近几个月都不看了。学术界怀旧无能,反倒是 Bram Cohen 这样的毛头小伙能出新意,引得 Microsoft(代表计算机工业界)的研究员去“改进” BitTorrent,结果被他批判为“All talk and no work” [7],和 Stanford (代表计算机学术界)请他去演讲 [8][9]。

这一段本来要讲自由主义、掌握自主思想的权利(也就是有权胡思乱想),结果很多内容都在上一段讲了。思想就像是一棵棵树,重在不同。你的思想往那个方向长,结果如何我看到了,因此我不想重复你的想法,我要有意无意、有理无理地朝这边长,朝没人长到的空间去分枝。这种思想方法,就是自由主义。我上 F 大时,本想借着独立研究成果来挑起 T 大和 F 大在求新求异上的竞争,现在看来,还需要一个个个人的带头作用。三年来,我越来越认识到自由主义对创新的必要性,这可以在我的研究经历和成果中体现出来。用一句斩钉截铁的话说就是:“自由不实现,创新不能谈”。


后记:莱布尼兹的四大梦想和我的人类四大信息自由

机械计算机理论之父莱布尼兹有四大梦想[13],其中一些现在已经实现了:
1. Encyclopaedia - 全世界人民集体编写的、用非形式语言(自然语言)表达的一部百科全书。这就是今天的 Wikipedia。
2. Universal Language - 一个全人类普遍使用的非形式语言。关于这个曾经有过 世界语、逻辑语(Lojban)等尝试。
3. The lingua characteristica - Universal Language 的形式化版本,同时也是 Encyclopaedia 的形式化版本。如现在 First Order Logic + Cyc。
4. The calculus ratiocinator - 自动推理一个 lingua characteristica 命题是否成立的机器,如现在的 Prolog。

我认为信息技术应该提供一个现代人以下四大信息自由:
1. 物理上连通的自由——已知一个人/信息资源的地址就能无阻碍的访问这个资源:就是现在的互联网;
2. 跨自然语言沟通的自由——能在软件的辅助下与一个讲自己不懂的自然语言的人准确地沟通,实现方法是消息经过一个形式化语言中转;
3. 跨越说法差异,连接本质相同的思想的自由——不管两个人对一个思想的具体说法(表达形式)有多不同,只要思想语义本质相同,那么这两人就能够建立联系,也就是上面说的 reverse dictionary lookup;
4. 连接问题和解决方案的自由——对于给出的任何问题,计算机都能通过人类现有知识和自动推理给出解答;或者如果计算机无法独立求解,至少告诉我解决此问题牵涉的人类现有知识有哪些。

 

[1]http://en.wikipedia.org/wiki/Pancake_sorting
[2]http://scholar.google.com/scholar?sourceid=mozclient&ie=utf-8&oe=utf-8&q=Bounds+for+Sorting+by+Prefix+Reversal
[3]http://www.bytecool.com/ioiforum/read.php?1,3695,3695#msg-3695
[4]http://www.wired.com/wired/archive/13.01/bittorrent.html
[5]http://groups.google.com/group/comp.theory/browse_frm/thread/c37b7f0585f8d823/c7c343e8a07028b3?lnk=gst&q=k-ary+tree&rnum=2#c7c343e8a07028b3
[6]http://technews.acm.org/current.cfm
[7]http://bramcohen.livejournal.com/20140.html
[8]http://www.stanford.edu/class/ee380/Abstracts/050216.html
[9]http://stanford-online.stanford.edu/courses/ee380/050216-ee380-100.asx
[10]http://www-helix.stanford.edu/people/altman/bioinformatics.html#12
[11]http://www.tug.org/TUGboat/Articles/tb23-3-4/tb75knuth.pdf
[12]http://www.ams.org/notices/200203/fea-knuth.pdf
[13]http://www.rbjones.com/rbjpub/philos/history/xh003-m.html
 

Python+Flask+Echarts打造全国气象数据可视化分析大屏 本文详细介绍了如何使用Python+Flask+Echarts构建全国气象数据可视化分析大屏,实现实时监控、趋势分析和快速决策。通过Python强大的数据处理能力、Flask的轻量级优势和Echarts的交互体验,打造高效的气象数据可视化系统,提升农业、物流等行业的决策效率。 阅读详情

相关推荐

海豚调度器(dolphinscheduler)再次使用,添加钉钉预警

1,首先我们部署是海豚调度器 1.3.8版本,由于页面只有邮件预警,所以在了解源码的同时,需要添加钉钉预警 2,说明,这一块是同事搞的,不是我搞的,新版本的dolphinscheduler已经有了钉钉模块,只是新版本还没有发布 3,我们现在只是添加简单的钉钉预警,任务成功或者失败会发送邮件+钉钉 4,具体操作 找到最新的源码devhttps://github1s.com/apache/dolphinscheduler/blob/dev/dolphinscheduler-alert/src/ma...

qq_31866793的博客 3083

OIers的那些痛苦

考前必看!!!小心那些易错的细节!

lxy_gua的博客 365

CTR模型:Deep&Cross Network

1. 简介 DCN模型(Deep & Cross Network for Ad Click Predictions)是2017年提出的。 出发点: (1)人工探索所有的交叉特征是不现实的; (2)难于推广未曾出现过的交叉特征。 DNN能够自动探索交叉特征并推广到未出现过的交叉特征,但是DNN的学习效率不高,且无法显式的学习特征交叉。 Deep&Cross Network, DCN 模型保留了DNN的优点,并提出了新的cross network,高效学习高阶特征交互。 优点: (1)cross

rosefun96的博客 9357

写给在CSP-J/S中苦苦挣扎的OIers

退役 or not, 这是一个问题 又一年的CSP-J/S初赛落下帷幕,几家欢喜几家愁。有几个小朋友因为今年的奇葩政策(不以分数取优)没能挺过初赛,心中彷徨:自己坚持了两年的OI之路竟以提前退役告终?

少儿编程乔老师 908

基于three.js的室内全景3D展馆案例分享

3D场景展厅

acheng 3558

Windows加域迁移避坑指南:Profwiz工具实战中的5个常见问题与解决方案

本文详细解析了使用Profwiz工具进行Windows加域迁移时的5个常见问题及解决方案,包括临时配置文件生成、密码策略冲突、SID冲突等。通过实战案例和优化技巧,帮助IT运维团队高效完成账户配置文件迁移,确保Active Directory环境下的数据完整性和权限无缝衔接。

q9r0s的博客 518

OIers的数据库、一些 OI 常用网站等

OIers的数据库、一些 OI 常用网站等

青少年趣味编程 2305

电子工程师日记:用STM32F4的DCMI接口驱动OV2640时,那些数据同步的坑我都踩过了

本文分享了使用STM32F4的DCMI接口驱动OV2640摄像头时,在数据同步方面遇到的典型问题与解决方案。作者通过示波器分析PCLK相位、纠正DCMI_CR寄存器中同步信号极性的配置误区,并排查DMA传输瓶颈与FIFO溢出,最终实现了稳定的图像采集。文章为嵌入式工程师提供了宝贵的硬件调试经验与配置清单。

weixin_29189377的博客 156

【100%通过率】华为OD机试真题 Python 实现【最多组合直角三角形个数】【2023 Q1 | 100分】

有N条线段,长度分别为a[1]-a[n]。 现要求你计算这N条线段最多可以组合成几个直角三角形。 每条线段只能使用一次,每个三角形包含三条线段。

MISAYAONE的博客 1万+

费雪的未来增长评估:预测颠覆性技术的影响

本文旨在提供一个系统性的框架,用于评估和预测颠覆性技术的增长轨迹。我们将重点关注费雪增长模型(Fisher-Pry Model)这一经典技术扩散理论,探讨其在现代技术预测中的应用价值。文章首先介绍费雪增长模型的基本概念,然后深入其数学原理和算法实现。随后展示实际应用案例,讨论工具资源,最后探讨未来发展趋势。每个部分都包含详细的技术实现和理论分析。费雪增长模型(Fisher-Pry Model):一种描述技术替代过程的S型增长模型,用于预测新技术取代旧技术的速率。

欢迎来到我的优快云空间!这里聚焦AI大模型应用实战,分享前沿技术、实战案例与开发经验。 928

概率 - 适合退役OIer以及闲得慌的非OIers

概率一直都让我头疼 而且还是必修三的内容 事件 几种事件 在一次随机试验中可能发生的不能再细分的结果被称为单位事件,用EEE表示。在随机试验中可能发生的所有单位事件的集合称为事件空间,用SSS来表示。 EEE是元素,SSS是集合 对于任意一个事件AAA,满足E∈A⊆SE\in A\subseteq SE∈A⊆S 事件的计算 事件是可以计算的! 和事件/并事件:C=⋂i=1nAiC=\bigcap_...

Antimonysbguy的博客 489

PyTorch实战(13)——图卷积网络(Graph Convolutional Network,GCN)

图卷积网络 (Graph Convolutional Network, GCN) 模型能够同时结合节点级特征和图级(邻域)信息进行分类,显著提升了图数据建模能力,适用于节点分类、图分类等多种任务。本节中,我们通过 PyTorch Geometric 库在 CiteSeer 图数据集上构建模型,们首先用前馈神经网络作为基线模型完成节点分类任务,随后用 GCN 模型替代前馈网络显著提升了分类准确率。

盼小辉丶的博客 3249

bzoj3400[Usaco2009 Mar]Cow Frisbee Team 奶牛沙盘队

Description     农夫顿因开始玩飞盘之后,约翰也打算让奶牛们享受飞盘的乐趣.他要组建一只奶牛飞盘 队.他的N(1≤N≤2000)只奶牛,每只部有一个飞盘水准指数Ri(1≤Ri≤100000).约翰要选出1只或多于1只奶牛来参加他的飞盘队.由于约翰的幸运数字是F(1≤F≤1000),他希望所有奶牛的飞盘水准指数之和是幸运数字的倍数.     帮约翰算算一共有多少种组队方式.

We are OIers 1909

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

视频隐私脱敏工程化:CSRT/KCF追踪算法在本地推理中的实现与边界

在短视频内容合规审查中,动态遮挡(Dynamic Masking)是高频且高耗时的环节。传统手动关键帧打码不仅效率低下,且在目标快速移动或遮挡时极易出现遮罩漂移。本文从计算机视觉工程角度,解析基于CSRT与KCF算法的目标追踪方案在视频隐私处理中的技术路径、性能权衡及落地实践。

Mysssone的博客 196

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【算法拾光】链表 哈希表|K个一组翻转链表 + 两数之和

K个一组翻转链表需分段反转,借助哑节点与前驱指针维护连接,避免断链;两数之和利用哈希表实现O(1)查找,空间换时间,高效定位目标组合。前者考察链表指针操作,后者聚焦映射关系构建,均为面试高频题。

wuqingyigexiaoba的博客 302

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

排序算法深度笔记(下):非比较类排序的线性突破与工程边界

排序算法时间复杂度额外空间复杂度稳定性是否基于比较选择排序O(N^2)(O(1))不稳定是冒泡排序O(N^2)(O(1))稳定是插入排序O(N^2)(O(1))稳定是归并排序O(N\log N)(O(N))稳定是快速排序O(N\log N)O(log N)不稳定是堆排序O(N\log N)O(1)不稳定是计数排序(O(N + M))O(M))稳定否基数排序O(N)稳定否桶排序平均O(N) / 最坏O(N^2)

2401_87069538的博客 567

算法日常・每日刷题--<动态规划>42

本题为“不相交的线”,与最长公共子序列问题相似。使用动态规划求解:定义 dp[i][j] 表示 nums1[0:i] 与 nums2[0:j] 的最大不相交连线数。若元素相等,则继承左上值加1;否则取上方或左方最大值。最终返回 dp[m][n],即两数组的最大不相交连线数。时间复杂度 O(mn),空间复杂度 O(mn)。

2503_92261635的博客 20

C语言程序设计题|有序数组插入数字冒泡排序

题目要求将一个数插入有序数组末尾,并用冒泡排序实现整体升序。代码先将输入数存入数组最后位置,再通过双重循环进行冒泡排序,每轮将较大元素向后移动,最终输出11个升序元素。该方法虽时间复杂度为O(n²),但符合题目要求,逻辑清晰,适合初学者理解排序原理。

2301_81429079的博客 748

【算法拾光】模拟|外观数列 + 数青蛙

本文总结两道模拟题解法:外观数列通过迭代统计连续数字个数生成下一项,关键在于处理末尾字符;数青蛙则模拟青蛙叫声“croak”状态转移,维护各阶段青蛙数量,记录最大并发数并确保全部完成。共性在于严格遵循流程、细致处理边界与非法情况,锻炼字符串遍历与状态管理能力。

wuqingyigexiaoba的博客 367

牛客周赛165C题(前后缀性质,递推,排序,枚举)

题目大意:给定长度为 `n` 的数组,选择 `k ∈ [1,n]`,将前 `k` 个元素整体翻转,后面的元素不变。要求操作后的整个数组非递减,统计满足条件的 `k` 的数量。题目链接:https://ac.nowcoder.com/acm/contest/141721/C。时间复杂度:O(nlogn)

2501_94316951的博客 170

【数据结构-3】算法美学之降复杂度

在while循环的循环体内,首先用临时变量保存最后一个位置的数据,再通过for循环把所有元素往后移动一位,最后把tmp中保存的值放到下标为0的位置上去。方法二的思路是:创建新数组,让原数组中后k个数据移动到新数组中前面的位置,让原数组中前numsSize-k个数据移动到新数组中后面的位置,这。这段代码的思路是:三次逆置,第一次逆置前numsSize-k个数据,第二次逆置后k个数据,最后整体逆置。这篇博文分享一道解法不一的算法题,求解过程的目的在于降低算法的时间复杂度,题源力扣。,属于空间换时间的操作。

weixin_44218929的博客 82
上一篇: Algorithm,Mathematic - 关于可计算理论
下一篇: Algorithm - 量子计算与图灵理论
AlphaJay
博客等级 码龄22年 19粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值