当前位置: 首页 > 编程日记 > 正文

人工智能和机器学习领域有哪些有趣的开源项目

人工智能和机器学习领域有哪些有趣的开源项目?
投递人 itwriter 发布于 2014-12-02 11:21 评论(0) 有20人阅读  原文链接  [收藏]  «


  本文简要介绍了 10 款   Quora 上网友推荐的 人工智能和机器学习领域方面的开源项目。

GraphLab

GraphLab 是一种新的面向机器学习的并行框架。GraphLab 提供了一个完整的平台,让机构可以使用可扩展的机器学习系统建立大数据以分析产品,该

公司客户包括 Zillow、Adobe、Zynga、Pandora、Bosch、ExxonMobil 等,它们从别的应用程序或者服务中抓取数据,通过推荐系统、欺诈监测系统、情感

及社交网络分析系统等系统模式将大数据理念转换为生产环境下可以使用的预测应用程序。( 详情)

项目主页: http://graphlab.org/

Vowpal Wabbit

Vowpal Wabbit (Fast Online Learning)最初是由雅虎研究院建设的一个机器学习平台,目前该项目在微软研究院。它是由 John Langford 启动并主

导的项目。

项目地址:  http://hunch.net/~vw/

scikits.learn

scikit-learn 是一个开源的、构建在 SciPy 之上用于机器学习的 Python 模块。它包括简单而高效的工具,可用于数据挖掘和数据分析,适合于任何

人,可在各种情况下重复使用、构建在 NumPy、SciPy 和 matplotlib 之上,遵循 BSD 协议。(详情)

项目地址: http://scikit-learn.org/stable

Theano

Theano 是一个 python 库,用来定义、优化和模拟数学表达式计算,用于高效的解决多维数组的计算问题。它使得写深度学习模型更加容易,同时也

给出了一些关于在 GPU 上训练它们的选项。( 详情)

项目地址: http://deeplearning.net/software/theano/

Mahout

Mahout 是 Apache Software Foundation(ASF) 旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便

快捷地创建智能应用程序。Mahout 包含许多实现,包括聚类、分类、推荐过滤、频繁子项挖掘。此外,通过使用 Apache Hadoop 库,Mahout 可以有效地

扩展到云中。

项目主页: http://mahout.apache.org/

pybrain

pybrain 是 Python 的一个机器学习模块,它的目标是为机器学习任务提供灵活、易应、强大的机器学习算法。pybrain 包括神经网络、强化学习(及

二者结合)、无监督学习、进化算法。以神经网络为核心,所有的训练方法都以神经网络为一个实例。

项目主页: http://pybrain.org/

OpenCV

OpenCV 是一个基于(开源)发行的跨平台计算机视觉库,可以运行在 Linux、Windows 和 Mac OS 操作系统上。它轻量级而且高效——由一系列 C 函

数和少量 C++ 类构成,同时提供了 Python、Ruby、MATLAB 等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。( 详情)

项目主页: http://opencv.org/

Orange

Orange 是一个基于组件的数据挖掘和机器学习软件套装,它的功能即友好,又很强大,快速而又多功能的可视化编程前端,以便浏览数据分析和可视

化,基绑定了 Python 以进行脚本开发。它包含了完整的一系列的组件以进行数据预处理,并提供了数据帐目,过渡,建模,模式评估和勘探的功能。

项目主页: http://orange.biolab.si/

NLTK

NLTK(natural language toolkit)是 python 的自然语言处理工具包。2001 年推出,至今发展非常活跃。它的主要作用是为了教学,至今已经在 20

多个国家 60 多所高校使用,里面包括了大量的词料库,以及自然语言处理方面的算法实现:分词, 词根计算, 分类, 语义分析等。

项目主页: http://nltk.org/

Nupic

Nupic 是一个开源的人工智能平台。该项目由 Grok(原名 Numenta)公司开发,其中包括了公司的算法和软件架构。 NuPIC 的运作接近于人脑,“当

模式变化的时候,它会忘掉旧模式,记忆新模式”。如人脑一样,CLA 算法能够适应新的变化。( 详情)

项目主页: http://numenta.org/nupic.html


--------------------------------------------------------------------------------

以上是小编整理的 10 款人工智能和机器学习领域的开源项目。更多项目可参看这个列表:http://deeplearning.net/software_links/,或查看

Quora 中更多网友的精彩回答。


     C++在“商业应用”方面,曾经是天下第一的开发语言,但这一桂冠已经被java抢走多年。因为当今商业应用程序类型,已经从桌面应用迅速转移成

Web应用。当Java横行天下之后,MS又突然发力,搞出C#语言,有大片的曾经的C++程序员,以为C++要就此沉沦,未料,这三年来,C++的生命力突然被严重

地增强了。主力原因就是开源的软件、基础软件(比如并发原生支持,比如Android必定要推出原生的SDK)、各种跨平台应用的出现。

开源C++库必须具有以下特点:必须是成熟的产品、跨平台的产品、相对通用的库。

一、通用标准类

STL:C++标准模板库,也是开源的。

boost:C++准标准库,它是强大地,江湖称之“千锤百炼”。

-------若掌握,必横行世界。

deelx (轻量级的正则表达式解析类库,国产),boost里有强大的正则表达式解析库,但如果你只想要一个表达式解析,不想要拖上庞大的boost

库时……支持一下国货。

iconv /iconvpp : (C形式的编码转换函数库,

二、XML解析库

C++的XML相关库不少,但是大部分其实都是C库,使用起来自然不那么轻便。其中基于DOM的有TinyXml,基于SAX的当然是Xerces。前者小巧快捷

,便于使用,适合做数据交换。后者则是全功能的XML解析器。

xerces-c :最强大的XML解析库了,不是仅仅在开源库里,你尽管把商业的算在内。当然,它的变体,被IBM拿去卖钱的那个版本,多了数百兆的

东东来支持各国编码转换,是更强大,但我觉得有小小的,开源的iconv在前不就够了?

对三个轻型xml解析开源库:SlimXml、TinyXml、RapidXml,对比如下:

解析这个3.3万行,1.5M大小的xml,三个库分别花了

· SlimXml: 22ms

· TinyXml: 54ms

· RapidXml: 4ms!

结论是,RapidXml果然很强悍,居然比SlimXml快5倍多。

比较欣慰的是,在没有很关注效率的情况下,SlimXml仍然比TinyXml快 2.5倍。SlimXml走的是简单小巧路线,源代码只有 32k,而TinyXml和

RapidXml的源码分别是147k和141k,有这样的效率可以满意了。因为这个库主要还是针对几十上百行的小文件,解析特别大的xml不在我考虑的范围之内。

还有irrlicht(鬼火引擎)的irrXMl解析器。

xsd (XML 与 C++数据结构的绑定工具)。

三、数据库

我比较喜欢OTL(用于连接数据库)。其他的没用过

四、多媒体类

SDL (Simple DirectMedia Layer/多媒体直接访问层,用于游戏编程)。

相应的c开源库有ffmpeg、mpeg4、aac、avc、libmad、mpeg1、flac、ac3、ac3、matroska著名的多媒体播放器 TCPMP 天下闻名的跨平台、嵌入式

手持设备视频播放器,

五、网络开发类

1、gSOAP SOAP协议的C++支持库及代码生成工具。

2、ACE  网络编程研究首选。
        ACE适合于研究,大型网络编程上效率不足,大型网游里面几乎没有用到ACE的,很多用了ACE的项目也被证明了效率不高。

除了ACE之外,还有很多系统和网络编程方面的程序库。比如在线程库方面,还有ZThread、boost::thread,如果放大到C/C++ 领域, 还有APR,还

有CII。在文件和目录操作方面,boost也有相应的组件,而在网络编程方面有socket++,还有boost::asio,未来的C++0X中几乎肯定有一个网络编程和一个

线程库。然而目前看来,ACE仍然是进行系统和高性能网络编程的首选,其地位在一段时间内不会被撼动。它不但是 一个实用的程序库、框架集,还是一个

典范的设计模式应用范例,非常值得学习。

3、开源C++库,称为POCO(POrtable COmponents – 可移植元件),非常方便好用。

特性:

* 线程,程序同步及多线程编程高级抽象
       * 流及文件系统访问
       * 共享库将类加载
       * 功能强大的日志和错误报告
       * 安全及加密
       * 网络编程 (TCP/IP 套接字, HTTP客户端和HTTP服务器, FTP, SMTP, POP3, 等)
       * XML解析 (SAX2 和 DOM) 及生成
       * 配置文件及选项处理
       * SQL数据库访问(ODBC, MySQL, SQLite)

可以运行的平台包括:

* Windows
       * Mac OS X
       * iPhone OS
       * (embedded) Linux
       * HP-UX
       * Tru64
       * Solaris
       * QNX

六、GUI库

BCG Windows平台下界面设计的第三方库,可以让你的界面更美好,更具时 代感。

wxWidgets :使用wxWidgets ,开发者可以基于同一套代码,为Win32, Mac OS X, GTK+, X11, Motif, WinCE等平台开发应用程序。wxWidgets库可

以被C++, Python, Perl, and C#/.NET等开发语言使用。跟其它有些同样支持跨平台GUI开发工具不同,基于wxWidgets的应用,拥有真实本地化的视觉及使

用效果——因 为,wxWidgets使用(各)平台原生的控件,而不是简单通过贴图去模拟。wxWidgets是使用广泛的,自由的,开源的,成熟的。

QT-------------界面(GUI)开发,支持C++/Java/Python/...多种语言。跨平台。最主要的好处是,API非常优 美!Qt本身也不仅仅只是做GUI编

程,实际它基本上可以做OS-API可以做的任何事情。象网络/数据库/OpenGL/...都提供完美的支持。

传统上Qt被认为是可移植的GUI库,但实际上Qt现在已经是一个比较完整的可移植应用程序框架了,其中包含了大量的工具,比如正则表达式、

Web和 Socket类、2D和3D图形、XML解析、SQL类等,甚至还包括了一个完整的容器类库,不过其王牌还是GUI。在目前的跨平台GUI框架中,Qt成 熟度最高

,已经被一些大公司应用在关键产品中。由于Trolltech对Qt采用的dual license模式,该产品既可以从开源社区获得支持,又能够赚取足够的商业利润,

因此其前景也令人比较有信心。

Qt的主要技术特色是其元对象模型。Qt实际上使用的并不是标准的C++,而是标准C++的一个扩展。它通过元对象模型扩展,实现了著名的

signal/slot机制,而这一机制也成为Qt的最大特色和优势。

与Qt类似的可移植GUI框架还有wxWidget、FOX等

六. 计算机视觉

OpenCV,因特尔自主的开源库。支持C/C++/Python接口。这个感兴趣的朋友可以玩一下。如果结合OpenCV,你可以做一些外行人觉得很酷的程序。比如

说用它的人脸识别函数,来对你的摄像头进行处理,判断人的动作等。

七. 图形图像处理

GDAL,处理大图像。要是GIS专业的人肯定会语言到非常大的tif影像,动则几个GB的航空影像。GDAL对大图像的读写支持是非常棒的(像多波段的图像都可

以搞定)。支持C++/Java/Python...

国外开源的GIS软件QGIS就是用了gdal

c的图形图像库较多,libjpeg、libpng、zlib、tiff、JBIG、最著名的开源形图像处理软件Cximage

八、内存管理:boost::smart_ptr,Hans-Boehm GC
       C/C++的内存管理是一个永恒的话题。一般来说,C++的开发者倾向于自己管理内存。然而,出乎很多C++开发者意料的是,近期C++的一些领袖人物

已 经公开宣称,如果不配备自动内存管理机制,用C++编写安全可靠的大型程序是非常困难的。     而Bjarne Stroustrup也曾对中国开发者建议,如果没

有特别的理由,应该在大型项目中使用自动内存管理工具。因此,今天的C++开发者应当积极地学习和应用 自动内存管理设施。

说到自动内存管理,比较轻量级的做法是boost::smart_ptr,而激进的做法是引入完整的GC机制。目前开源而又比较可靠的GC中,Hans- Boehm GC

无疑是最受信赖的。作为一个保守的GC,Hans-Boehm GC在性能和功能方面都算是卓越。特别是,使用这个GC,你仍然可以delete、free来自己管理内存,

对于我们编程习惯的冲击比较小。

九、密码及安全:OpenSSL
        安全是今天进行C/C++编程无法回避和必须重视的问题。然而编写安全的应用程序,特别是跟网络相关的C/C++应用程序,是一件十分困难的事情。

特别是涉及到大量的安全、密码学相关的算法、规范,如果让开发者自己摸索,其工作量和难度达到了不现实的程度。因此必须借助可靠的相关程序库才有

可能提高程序的安全性。借助第三方安全保护平台,给程序做加密保护。在安全库这方面,OpenSSL是目前最好的选择,其内容之全面可靠,已经成为业界

标杆。在应用程序加密保护这块,爱加密是非常专业的。然而,由于安全编程固有的复杂性,即使使用penSSL,开发工作仍然是非常繁琐的。因此我们也希

望能够尽快看到更简单、更易用的C/C++安全程序库。

十、矩阵计算:MTL
        自1995年以来,C++在科学计算领域当中取得了巨大的突破。这主要归功于template技术的高级应用,使得C++在科学计算的性能方面取得了巨大

的进步,一大批优秀的C++科学计算库涌现出来。比如Blitz++、POOMA、MTL、Boost::uBLAS。而这其中,MTL就功能丰富程度、 性能、开发支持和成熟程度

来讲,是比较突出的一个,因此可以优先考虑。值得一提的是,2002年,MTL与后来被Intel收购的KAI C++配合,曾经在性能评测中击败了FORTRAN。

十一、中间件

1、分布式对象中间件:ICE
        ICE是分布式对象中间件领域里的后起之秀,可以大致地将其视为“改进版”的CORBA。目前应用在一些大型项目当中,其中包括波音公司主持的下

一代陆军作战系统。
        ICE的一个特别价值是其代码的范例意义。由于ICE的出现较晚,开发者比较系统地应用了新的C++编程风格,所以成为了研读C++代码的良好目标。

2、消息中间件:ZeroMQ,总结的几种特性如下:

1) 消息系统中,它差不多是最简洁的,只是个简洁的API,有n多种语言的绑定,没有专门的服务器;
        2) 性能非常优越,远远高于RabbitMQ、ActiveMQ、MSMQ等;
        3) 适合做分布式和并发应用。


        十二、正则表达式:boost::regex
        正则表达式是编程工作中最强有力的工具之一。C++的正则表达式支持一直以来是一个软肋。大约在2001年左右,boost中出现了regex库,初步解

决了这个问题。但是最初的regex无论在效率上还是可靠性方面都有一些问题,后来经过一次大规模的翻修之后,达到了比较完善的程度。其他可以选择的

替代品还有C语言的pcre库,Qt中的QRegExp类等。

十三、配置管理:Lua
        随着软件系统越来越复杂,对软件的可配置型提出了越来越高的要求。传统上只要通过命令行参数来配置的系统,现在可能需要越来越多的方式和

机制。目前越来越 受欢迎、并且得到越来越多证实的做法,是将Lua嵌入到C/C++程序中,而用Lua程序作为配置脚本。这种做法的优势是,Lua语言强大灵

活,可以适应 复杂的配置要求。同时,Lua便于嵌入C/C++程序,而且编译执行速度非常快,可以说是目前解决C/C++程序配置管理问题的一个出色方案。

十四、3D游戏引擎:

1. Irrlicht http://irrlicht.sourceforge.net/

始于2003,次年即被评为最佳开源游戏引擎。官方支持C++和.Net,拓展语言绑定包含java,perl,ruby,python.跨平台支持,使用D3D,OpenGL以及自

带API.

优点:容易上手;跨平台;自带XML解析器;大的社区;

缺点:最近开发慢下来了

2. Panda3D http://www.panda3d.org/

由迪斯尼开发,卡耐基-梅隆娱娱乐科技中心支持。Python是官方推荐语言。也支持C++。

优点:有用的社区;大量功能;定期开发;

缺点:缺乏工具支持;极差的文档;

3. OGRE http://www.ogre3d.org/

图像引擎中最好的一个。2000年立的项。推荐使用C++语言。需要非常熟悉编程才行。初学者不宜。

优点:大量功能;优异的文档;大规模的社区;活跃的开发

缺点:不适合初哥;只有图像引擎

4. Crystal Space http://www.crystalspace3d.org/main/Main_Page

1997年发行,用C++编写的开源游戏引擎。推荐使用C++

优点:不错的社区支持;大量功能;

缺点:难学;

5、Delta3d  ?http://www.delta3d.org/index.php

Delta3D是一款由美国海军研究学院(Naval Postgraduate School)开发的全功能游戏与仿真引擎,得到美国军方巨大的支持与丰厚的投资。该引

擎应用领域极为广泛,如开发在培训、教育、娱乐行业和科学计算可视化领域等方面建模与仿真的软件。

它的标准化设计把一些知名开源软件和引擎         如 Open Scene Graph(OSG), OpenDynamicsEngine (ODE), Character Animation Library

(CAL3D), 还有 OpenAL融为一体。Delta3D通过对这些底层模块进行隐藏封装,整合在一起从而形成了一个使用更加方便的高级API 函数库,使得开发者在

必要的时候能够使用底层函数进行二次开发。Delta3D在软件系列中,处于中间层(Middle layer)的位置上。

优点:适合各种3D游戏,仿真,很全面。一直在做更新。

缺点:参考资料比较少。中文文档也比较少。官方参考资料比较少。但是读源代码可以加快理解,应用。

转载于:https://www.cnblogs.com/spinsoft/p/4137749.html

相关文章:

复杂度归纳--小结

一、复杂度分析的4个概念1.最坏情况时间复杂度:代码在最理想情况下执行的时间复杂度。2.最好情况时间复杂度:代码在最坏情况下执行的时间复杂度。3.平均时间复杂度:用代码在所有情况下执行的次数的加权平均值表示。4.均摊时间复杂度&#xff…

KDE社区:首个KDialogue正式开放

今天KDE社区与“People Behind KDE” 合作推出一个非常有意思的栏目,叫作KDialogue。 关于KDialogue,有点类似头脑风暴。简言之就是成员向社区发起关于KDE的话题(或某一问题),然后KDE的开发者会被邀请参与这个话题。KE…

1091 Acute Stroke 需再做

这是BFS的典型应用场景:求给定矩阵中块(由相邻的点组成)的大小之和。不同的是这一次是三维。 判断是否邻接的依据是是否有公共边,还是可以用上增量数组的技巧 int X[6] {0,0,1,-1,0,0};//增量数组 int Y[6] {1,-1,0,0,0,0}; int Z[6] {0,0,0,0,1,-…

Ext UI 第一步

Code//Ext.onReady(function(){ var _panelnew Ext.Panel({ renderTo:Ext.getBody(), title:"XXX" });});空面板 加按钮方法:addButton(String/Object _config,Function _handler,Object _scope):添加一个按钮对象到面板Codevar loadfunction(){ …

深入浅出 Java Concurrency (29): 线程池 part 2 Executor 以及Executors[转]

Java里面线程池的顶级接口是Executor,但是严格意义上讲Executor并不是一个线程池,而只是一个执行线程的工具。真正的线程池接口是ExecutorService。 下面这张图完整描述了线程池的类体系结构。 首先Executor的execute方法只是执行一个Runnable的任务&…

WPF的消息机制(二)- WPF内部的5个窗口之隐藏消息窗口

原文:WPF的消息机制(二)- WPF内部的5个窗口之隐藏消息窗口版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/powertoolsteam/article/details/6109036 目录 WPF的消息机制(一)-让…

二叉树:root==NULL和*root==NULL的区别

root NULL 通常为查找的递归边界,说明当前结点不存在。 *root NULL 表明当且结点存在,但是内容不存在。是创建一棵二叉树时的初始化操作。 前者常用得多。

Intent携带额外的数据的方法

1、putExtras(Bundle data):向Intent中放入需要“携带”的数据。2、putXxx(String key,Xxx data):向Bundle放入Int、Long等各种类型的数据。3、putSerializable(String key,Serializable data):向Bundle中放入一个可序列化的对象。转载于:https://www.cnblogs.com/ahao214/p/41…

为什么 JavaScript 的私有属性使用 # 符号

这几天 JavaScript 的私有属性又成为了前端社区热议的话题。原因很简单,这家伙长这样: 惊不惊喜!意不意外! 而且 TC39 委员会以及对此达成了一致意见,并且该提案已经进入了 stage 3。在 es 规范阶段 stage 3 是候选提案…

程序员感悟----路该怎么走

有一句话我一直记得很深,“当人深处迷茫之中时早已不再迷茫”。很绕很矛盾的话,也可能有人听到后会马上跳脚喊,我一直迷茫怎么还是迷茫呢?呵呵。静一下想一下再喊。 大家都这么大了,路该怎么走,你知道么&am…

1020 Tree Traversals

1. 有这样一个经典结论:中序序列可以和先序序列、后序序列、层序序列中的任意一个来构建唯一的二叉树,而后三者两两搭配或者三个一起上都不行。因为从本质上来说,后三者都只提供根结点,只有通过中序才能区分左右子树。 2. 本题用…

Android添加权限大讲解

http://bbs.51cto.com/thread-1096739-1.html 对于新手来说,最烦恼的不是如何从网上下载到安卓项目,而是下载到的安卓项目不知道如何添加权限和要添加哪些权限。现在就针对安卓的权限来讲解这些权限应该具体用在什么地方 首先在项目下找到 AndroidManife…

经典算法之选择排序

问题 有一数组a,长度为n,把数组中的元素从大到小重新排列 思路 选择排序十分容易理解。可以理解为有一个盘子,里面装着很多钻石,你可以从里面拿钻石,但一次只可以拿一颗。第一次你当然会拿最大的出来了,第二…

PHP 读写数据库出现中文乱码问题

一、我在PHP读写数据库时,出现中文乱码问题的解决方案: 1、加入一句话就行了: mysql_query("set character set utf8");//读库 mysql_query("set names utf8");//写库 //其实读写都可以只加入 m…

1086 Tree Traversals Again

1. 这题的核心部分是,根据二叉树的先序序列和中序序列求后序序列。等于是在1020 Tree Traversals这一题的基础上,把怎么得到先序序列和中序序列的难度加大了,不是直接给出,而是要曲折一点得到。 2. 先序序列的得到就是把Push后面…

Eclipse的Java工作集和多工程构建路径

一、Java工作集: Eclipse有一个小功能,就是创建Java Working Set。它的作用是解决Package Explorer窗格中创建很多工程时出现拥挤的麻烦。 在创建(New对话框)时可以加入原来存在的Java工程。创建完后,在左方Package Ex…

ORA-08002: sequence MySeq.currval is not yet defined in this session

2019独角兽企业重金招聘Python工程师标准>>> MySeq.currval 从你的会话中的MySeq序列获取最新的值并返回,因此,它未曾被定义,直到你在你的会话中至少一次用MySeq.NEXTVAL获取一个值。CURRVAL的目的是让你在你的代码中使用某个序列…

【Vegas原创】exp时,ORA-00932: 数据类型不一致解决方法

现象: EXP-00056: 遇到 ORACLE 错误 932 ORA-00932: 数据类型不一致: 应为 BLOB, CLOB, 但却获得 CHAR EXP-00000: 导出终止失败 解决方法: 运行2个脚本: SQL> ?/rdbms/admin/catmetx.sql SQL> ?/rdbms/admin/utlrp.sql 转载于:htt…

1102 Invert a Binary Tree 需再做

1. 题目的输入是&#xff0c;先给出结点总数N&#xff0c;然后N行给出的是值为x&#xff08;0<x<N-1&#xff09;的结点的左右结点的值&#xff0c;若不存在左/右结点&#xff0c;则值为 - 。 2. 这一题我用动态链表没有做出来&#xff0c;根据参考书提示改用静态链表。…

iOS安全攻防(八)Thoes的Logos简介

个人原创&#xff0c;转帖请注明来源:cnblogs.com/jailbreaker 上一篇帖子&#xff0c;讲到使用iOSOpenDev开发基于Theos的Tweak,功能Hook了SpringBoard的 -(void)applicationDidFinishLaunching:(id)application。 先简单讲一下Hook,Hook中文翻译为“钩子”&#xff0c;非常形…

Algs4-1.1.13编写一段代码,打印出一个M行N列的二维数组的转置(交换行和列)

1.1.13编写一段代码&#xff0c;打印出一个M行N列的二维数组的转置(交换行和列&#xff09;。public class Test{public static void main(String[] args){//初始化int MInteger.parseInt(args[0]);int NInteger.parseInt(args[1]);String[][] arraynew String[M][N];for (int…

1053 Path of Equal Weight

1. 以下两组关系很大的概念 树的深度优先搜索 - 先根遍历 - 递归 树的广度优先搜索 - 层序遍历 - 非递归 本题考察的是前者&#xff0c;我设置了这样一个结构体 struct Prestruct{int totalWei 0;vector<int> pre; };Prestruct pre[maxn]; pre[idx].pre向量存放父节…

MapXtreme 2005 学习心得 在地图上创建点/线并显示标注(五)

新建示例 1&#xff1a;新建项目 新建一个网站&#xff0c;选择MapXtreme 6.7.1 Web Application在App_Code中&#xff0c;我们新建一个类&#xff0c;起名叫:LayerManager.cs2&#xff1a;把上节函数放到类LayerManager中 把上一节的函数代码全copy过来&#xff0c;还有using的…

无人驾驶——对frenet坐标的理解

好的确定车和路之间的关系&#xff0c;我们通常将车辆的在大地坐标坐标转化为车辆和道路之间的frenet坐标。 可能有人会疑问为什么转换后就方便了呢&#xff1f;我们来看一个例子。 在大地坐标下&#xff1a; 无人车首先要知道红色车的位置。通过传感器得到目标在车辆坐标系下的…

1079 Total Sales of Supply Chain

1. 这道题考察的是树的层次遍历&#xff0c;结点需要有层这个属性&#xff0c;对于我来说&#xff0c;难点在于什么时候给层赋值&#xff0c;看书后知道应该是在加入队列之前(不管是根节点还是之后所有节点)。 2. 一开始算得216&#xff0c;原因是把r直接加一当作底数&#xf…

在VS下用C语言连接SQLServer2008

在VS下用C语言连接SQLServer2008 原文:在VS下用C语言连接SQLServer2008 step1:启动SQLSERVER服务 step2:打建立数据库test,在test库中建立test表(a varchar(200),b varchar(200)) step3:建立系统DSN,开始菜单 ->运行 ->odbcad32, 添加->SQL SERVER Native Client 1…

canvas.width和canvas.style.width区别以及应用

今天讲的内容是canvas.width和canvas.style.width的区别&#xff0c;在没有做canvas项目之前&#xff0c;其实我是并没有深入了解过这两个属性的&#xff0c;最近在研究canvas项目的自适应问题&#xff0c;尤其是在canvas中置入图片&#xff0c;碰到了图片模糊的问题&#xff0…

vj p1042捕风捉影 题解

原体叙述 题意就是让你找出m,n之间的既是回文数又是素数的数 此题完全可以打表。除打表外&#xff0c;方法如下&#xff1a; 构成法 根据数学知识可知&#xff0c;如果一个回文数为偶数位&#xff0c;则必然能被11整除。 即所找的结果必为奇数位。 这样&#xff0c;大致方法就出…

1090 Highest Price in Supply Chain 需再做

1. 由于用不上结点的数据域&#xff0c;所以可以只用整型向量数组存放每一个结点的子节点下标即可。 2. 涉及到层次&#xff0c;未必用层次遍历&#xff0c;本题用先根遍历&#xff0c;也就是深度优先代码更优雅。 3. 这题创建树未必难&#xff0c;但是题目有一句话必须读懂e…

有关Adobe公司的PostScript语言授权问题

各位大神好&#xff1a; 最近公司打算用PostScript语言开发一款打印机产品&#xff0c;本人现在正对这方面予以了解&#xff0c;但是关于Postscript却一无所知&#xff0c;请问园子里的大神们有没有知道的。 我是想咨询一下有关adobe公司在上世纪80年代公司刚成立的时候所推出的…