Sunday, March 29, 2009
Saturday, March 28, 2009
介绍Linux内核是如何工作的
http://news.csdn.net/n/20090327/124513.html
Friday, March 27, 2009
TIOBE Programming Community Index for March 2009
March Headline: All time high for JavaScript, all time low for Perl
The TIOBE Programming Community index gives an indication of the popularity of programming languages. The index is updated once a month. The ratings are based on the number of skilled engineers world-wide, courses and third party vendors. The popular search engines Google, MSN, Yahoo!, and YouTube are used to calculate the ratings. Observe that the TIOBE index is not about the best programming language or the language in which most lines of code have been written.
The index can be used to check whether your programming skills are still up to date or to make a strategic decision about what programming language should be adopted when starting to build a new software system. The definition of the TIOBE index can be found here.
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
GT problems
1.find shortest distance between two nodes in non-negatively weighted directed graph
2.find topological ordering of the nodes
3.find max flow in flow network
4.maximum matching in unweighted graph
5.matching in weighted bipartite graphs (an assignment problem )
6.find distances between all pairs of nodes in non-weighted directed graph
7.find minimum spanning tree for a connected weighted graph
8.test graph for bipartiteness
9.vertex cover problem
如何投资股票之三大建议
广大股民期待已久的“杨百万炒股秘笈报告会”昨天下午在煤海大剧院成功举行。为时两个多小时的报告会中,被誉为“中国第一股民”的杨百万热情洋溢,妙语连珠,与1500余名热情股民分享了他投身股市20年的独特理念和成功经验。报告会受到了广大股民的热烈追捧,取得了圆满成功。
■经典语录
1、股市政府主导,不可逆市而为。
2、股市是放大人性弱点的放大镜。
3、抄底逃顶,落袋为安。
4、指数在高位时,把套牢卖给别人,指数在低位时,把盈利留给自己。
5、低位投资,高位投机。
6、炒股要克服人性的两大弱点:贪婪与恐惧。
7、花不完的钱,再多也不要挣。
8、能使新股民相信的谎言就是概念。
■“谈股论金”之精彩报告
“炒股要克服人性的两大弱点:贪婪与恐惧,要坚持落袋为安”
报告会上,杨百万感慨道:“人民币很有力量,可是有多少人把握得住?”从5·30的股市大跌到现在,大盘虽然已经冲上了5000点,可还有很多人的损失在30%左右,究其原因是广大股民的贪婪和畏惧,不能够做到顺势而为。
结合自己多年来亲历股票市场的风云变幻,杨百万感叹:“在股票市场上,人性的弱点被最大限度地放大,在追逐财富的过程中,贪婪和恐惧让很多散户最终败走股市。很多股民看到股票涨了,就盲目进场,获利了也没有及时将资金落袋为安,最终被套在了高位。而当股票跌到了低位时,很多人又不敢买进,有些人甚至因为耐不住套牢多日,而选择割肉,结果错过了股票的高位。”
杨百万预言:股市行情将在一个半月内出现震荡
“5·30”之前,杨百万综合分析各方面的信息,结合自己的经验,判断出股市将要出现大幅调整,并早早清仓。他的判断曾经被发表在媒体上,但并没有得到热烈回应。最后,事实证明了他当初判断的正确性。
在昨天的报告会上,杨百万再次大胆预言,在未来一个半月左右的时间里,中国的股市还将经历一场大的调整,因为股市已经进入了一个高风险的领域,国家也已经采取一些措施抑制股市的过快增长。为此,他建议广大投资者尽量回避高位风险,短线投资或波段交易才是理智的。
如何投资股票,杨百万给出三点建议:
一是选对时机:
职业投资者区别于普通投资者的最大之处在于,他们往往能从变化莫测的股市交易细微处,洞察先机。而他们之所以能看出盘中数字变化传递的信息,是一种经验的积累,亦即股市经历。
杨百万提出,看盘主要应着眼于股指及个股未来趋向的判断,大盘的研判一般从以下3方面来考虑:股指与个股方面选择的研判;盘面股指(走弱或走强)的背后隐性信息;掌握市场节奏,高抛低吸,降低持仓成本。尤其要对个股研判认真落实。
二是选对股票:
好股票如何识别?杨百万建议股民可以从以下几个方面进行:
(1)买入量较小,卖出量特大,股价不下跌的股票。
(2)买入量、卖出量均小,股价轻微上涨的股票。
(3)放量突破趋势线(均线)的股票。
(4)头天放巨量上涨,次日仍然放量强势上涨的股票。
(5)大盘横盘时微涨,以及大盘下跌或回调时加强涨势的股票。
(6)遇个股利空,放量不下跌的股票。
(7)有规律且长时间小幅上涨的股票。
(8)无量大幅急跌的股票(指在技术调整范围内)。
(9)送红股除权后又涨的股票。
三是选对周期:
股民可根据自己的资金规模、投资喜好,选择股票的投资周期。
在报告会上,杨百万还结合个人的投资理念和经验,就某些具体股票的表现和大盘走势进行了阐释。
■“谈股论金”之会场之外
杨百万受聘,任晚报“财富管家”顾问
此次应晚报邀请,来徐州举行“炒股秘笈报告会”,杨百万自言说是“故地重游”,原来早在20多年前,杨百万经常往来徐州和上海之间,在徐州的老天桥进行国库券的交易。杨百万说,正是这样的交易,让当年他有了进入股市成为“杨百万”的资本。
在报告会举行之前,杨百万还应邀被本报聘为“财富管家” 顾问,杨百万愉快地接受了这一聘任,并感谢晚报为他提供了这样一次与徐州广大股民分享的机会。他热情地表示:“作为一名炒股20余年的老股民,我非常乐意把我的操作理念和经验与广大股民分享。”
■“谈股论金”之热情股民
昔日学生现场送锦旗
报告会现场,市民苗先生和宋女士带着一幅写着“股海迷津指点、市值连年翻番”的锦旗,准备送给杨百万,这一场景受到了广大股民的关注。
记者了解到,原来苗先生和宋女士曾经是杨百万的“学生”,到上海跟着杨百万学过炒股票,而且收益不错。“我曾数次到杨老师家里听他的课,第一次是2000年3月28日,听了一天,第二次听了两天,主要是专门学习抄底、逃顶、如何盯庄等。”
苗先生讲起来一脸的兴奋,“现在杨老师闭着眼睛,就能说出股市的涨停线,他自己做了一套软件,我跟他学了7年,炒股炒了10年,现在已经翻了两三番了。”
股民排队热抢杨百万新书
此次来徐,杨百万还携带自己的新书《要做股市赢家——杨百万股经奉献》,来回馈徐州的广大股票爱好者。看到杨百万带来的新书,股民们立即蜂拥而上,不到十分钟,先行运到的上百本书抢购一空,有的股民甚至一口气买了好几本,准备回去赠送给股友。而买到书的读者纷纷追出会场近百米找杨百万签字。
■“谈股论金”之股民心得
纵先生(园林局退休人员):“选准时机非常重要,另外呢,我也用过杨老师的软件,软件挺好的,但也不是全部跟着软件走,杨老师也说了,没有人能清楚知道未来股市能长到几点,要综合考虑各种因素。”
张女士(投资股票16年):“我觉得,现在理财已经深入人心。这种报告会使理财理念扩大化,不只是炒股这一个方面。我身边的朋友投资证券的特别多,他们都非常依赖杨百万。”
王先生(家住祥和小区):“炒股看大势,‘跟着政策走’,人民币增值的大势在,我们就敢炒。杨老师讲的是他的实战经验,挺好,所以我准备买他的书回去研究一下。另处,我个人观点,中国最大的股市市场在年轻人,年轻人呢,现在种下一颗苗,将来的大树自己乘凉。”
Wednesday, March 25, 2009
拓扑排序
本节说明了如何用深度优先搜索,对一个有向无回路图进行拓扑排序。有向无回路图又称为dag。对这种有向无回路图的拓扑排序的结果为该图所有顶点的一个线性序列,满足如果G包含(u,v),则在序列中u出现在v之前(如果图是有回路的就不可能存在这样的线性序列)。一个图的拓扑排序可以看成是图的所有顶点沿水平线排成的一个序列,使得所有的有向边均从左指向右。因此,拓扑排序不同于通常意义上对于线性表的排序。
有向无回路图经常用于说明事件发生的先后次序,图1给出一个实例说明早晨穿衣的过程。必须先穿某一衣物才能再穿其他衣物(如先穿袜子后穿鞋),也有一些衣物可以按任意次序穿戴(如袜子和短裤)。图1(a)所示的图中的有向边(u,v)表明衣服u必须先于衣服v穿戴。因此该图的拓扑排序给出了一个穿衣的顺序。每个顶点旁标的是发现时刻与完成时刻。图1(b)说明对该图进行拓扑排序后将沿水平线方向形成一个顶点序列,使得图中所有有向边均从左指向右。
下列简单算法可以对一个有向无回路图进行拓扑排序。procedure Topological_Sort(G);
begin
1.调用DFS(G)计算每个顶点的完成时间f[v];
2.当每个顶点完成后,把它插入链表前端;
3.返回由顶点组成的链表;
end;
图1(b)说明经拓扑排序的结点以与其完成时刻相反的顺序出现。因为深度优先搜索的运行时间为θ(V+E),每一个v中结点插入链表需占用的时间为θ(1),因此进行拓扑排序的运行时间θ(V+E)。
图1 早晨穿衣的过程
为了证明算法的正确性,我们运用了下面有关有向无回路图的重要引理。
引理1
有向图G无回路当且仅当对G进行深度优先搜索没有得到反向边。
证明:
→:假设有一条反向边(u,v),那么在深度优先森林中结点v必为结点u的祖先,因此G中从v到u必存在一通路,这一通路和边(u,v)构成一个回路。
←:假设G中包含一回路C,我们证明对G的深度优先搜索将产生一条反向边。设v是回路C中第一个被发现的结点且边(u,v)是C中的优先边,在时刻d[v]从v到u存在一条由白色结点组成的通路,根据白色路径定理可知在深度优先森林中结点u必是结点v的后裔,因而(u,v)是一条反向边。(证毕)
定理1
Topological_Sort(G)算法可产生有向无回路图G的拓扑排序。
证明:
假设对一已知有问无回路图G=(V,E)运行过程DFS以确定其结点的完成时刻。那么只要证明对任一对不同结点u,v∈V,若G中存在一条从u到v的有向边,则f[v]
下面是该算法的具体实现:procedure Topological_Sort_II(G);
begin
1 for 每个顶点u∈V[G] do d[u]←0; //初始化d[u],d[u]用来记录顶点u的入度
2 for 每个顶点u∈V[G] do
3 for 每个顶点v∈Adj[u] do d[v]←d[v]+1; //统计每个顶点的入度
4 CreateStack(s); //建立一个堆栈s
5 for 每个顶点u∈V[G] do
6 if d[u]=0 then push(u,s); //将度为0的顶点压入堆栈
7 count←0;
8 while (not Empty(s)) do
begin
9 u←top(s); //取出栈顶元素
10 pop(s); //弹出一个栈顶元素
11 count←count+1;
12 R[count]←u; //线性表R用来记录拓扑排序的结果
13 for 每个顶点v∈Adj[u] do //对于每个和u相邻的节点v
begin
14 d[v]←d[v]-1;
15 if d[v]=0 then push(v,s); //如果出现入度为0的顶点将其压入栈
end;
end;
16 if count<>G.size then writeln('Error! The graph has cycle.')
17 else 按次序输出R;
end;
上面的算法中利用d[u]来记录顶点u的入度,第2-3行用来统计所有顶点的入度,第5-6行将入度为0的顶点压入堆栈,第8-15行不断地从栈顶取出顶点,将该顶点输出到拓扑序列中,并将所有与该顶点相邻的顶点的入度减1,如果某个顶点的入度减至0,则压入堆栈,重复该过程直到堆栈空了为止。显而易见该算法的复杂度为O(VE),因为第2-3行的复杂性就是O(VE),后面8-15行的复杂性也是O(VE)。这个算法虽然简单,但是没有前面一个算法的效率高。
上一页 返回目录 返回页首 下一页
本页最后一次更新于03/26/2009email: starfish@vip.sina.com©2000 算法与数据结构 http://algorithm.126.com/ 版权所有 转载请保留出处
SQL 大全
Tuesday, March 24, 2009
A Publisher's Introduction to the Semantic Web
White Papers
Newsletters
A Publisher's Introduction to the Semantic Web
by Ed Stevenson
Spamoflage( 'ES', 'Email' );
May 2005
Although the concept of the Semantic Web began to surface in the early part of this century (see this early Scientific American article from Tim Berners-Lee, James Hendler, and Ora Lassila), it is now reaching buzzword status. Some publishers have been using technologies considered to be "semantic" for a few years, but it is a new topic for many others.
What do the concepts behind the Semantic Web mean for publishers? Well, first let's ask—what is the Semantic Web? The point of the Semantic Web is a richer interconnectiveness among all objects (or content), thereby allowing us to pull data from various sources to discover new meaning and present in different formats. A simpler view is that the Semantic Web makes better use of metadata. That is, all objects on the web are assigned rich data to describe themselves (in a universal and standardized format), and tools are better able to make use of that data.
Creating richer metadata
Almost all publishers use metadata in some capacity. Most also use taxonomies (a hierarchy of terms used to categorize content), although they might not call them by that name. The next step beyond that is the use of ontologies. Just as taxonomies make metadata or controlled vocabularies look "flat," ontologies do the same to taxonomies. Ontologies describe more detailed relationships among concepts and provide a higher level of richness in the metadata.
Taxonomies are just like the animal and plant kingdom taxonomies, in which every species lives in a particular branch. However other, more conceptual objects don't always have that clear lineage. If we created a taxonomy based on colors with the three primary colors—red, yellow, and blue—as the top nodes, orange would need to be related to both red and yellow. In a simple taxonomy, we would probably repeat the term "orange" under both, but in a technical sense they would really be two distinct nodes that have the same name.
In an ontology, orange can be represented as the exact same concept appearing in multiple nodes on the tree. In fact, an ontology is not a tree at all. It is a complex mapping of concepts with defined relationships between those concepts (such as "part of" or "subclass of").
In their most expanded use, ontologies can in themselves be valuable collections of information and almost become database-like in nature. Imagine an ontology that captures court "metadata" for a legal publisher. That publisher may currently have a taxonomy with branches for federal courts, district courts, state courts, etc. But in this "flat" taxonomy, there is probably no implicit relationship between the local and district courts or state courts or to geographical boundaries like state or congressional district lines. In an ontology those relationships can be established. Of course, documents are still tagged to nodes in the ontology, but even without the documents, the ontology becomes a very valuable piece of content.
RDF and OWL: expressing richer metadata with W3C standards
The W3C standard framework for expressing metadata (including taxonomies and ontologies) is RDF (Resource Description Framework).
RDF provides a standard framework for expressing information about resources (metadata) that allows for complex definition of relationships, polyheirarchal taxonomies (giving a node multiple parents), and the ability to combine taxonomies (by connecting a detailed taxonomy to a broader taxonomy through a common node). The purpose of RDF is to create a syntax to capture rich metadata and relationships and allow the processing of this data by applications.
The RDF data model expresses relationships among resources in what is called "triples." These triples define two things and the relationship between them. Each triple consists of a subject, a predicate and an object (sometimes called the resource, property, and value). The subject (or resource) is the "thing" the statement is about, the predicate (or property) specifies a characteristic or property of the subject, and the object (or value) is the value of that characteristic or property.
The following illustration is an RDF graph representing a triple that illustrates the simple metadata value of the author of this newsletter article:
Where RDF gets interesting is when you start to combine triples, such as making the author the subject of another triple describing his email address or company affiliation.
The PRISM metadata standard can often be expressed in RDF, many RSS feeds use RDF syntax, and Adobe's XMP (eXtensible Metadata Platform) for embedding metadata within media objects makes use of RDF.
But being a structured framework, RDF is more syntax (structure) than semantics (meaning). OWL (Web Ontology Language) is the W3C effort to provide a standard for the types of relationships that can be expressed in RDF. OWL provides for an XML vocabulary to express hierarchies and relationships. OWL introduces specific property vocabularies, such as "sameAs" and "intertsectionOf." OWL provides a shared meaning in the RDF syntax.
Topic Maps: expressing richer metadata with ISO standards
In semantic circles, there is often discussion about RDF vs. topic maps. In most conceptual ways topic maps are very similar to RDF with some slight and subtle distinctions. Both have different origins. Whereas RDF came through the W3C, topic maps are an ISO standard and arose to address the need to create indexes (like back of the book indexes). Topic maps prime focus is on the topics (or subjects); RDF focuses on the resources. Although both were created for somewhat different purposes, both do very similar things.
Topic maps describe topic structures and associate them with resources. Like RDF, topic maps break from the traditional hierarchal taxonomy and offer much more robust classification, indexing, and relationship descriptions. Topic maps allow for the creation of complex topical descriptions which then point out to resources. There is a separation between the topical information (the index) and the content which is associated to specific topics within it.
The topic maps "language" uses topics, occurrences, and associations in its model where the topic is the resource (the thing or the subject), the occurrence is the resource that has some association with the topic, and the association is a type of relationship. You can see from a very high level the similarities with the RDF model. Note in topic maps the association is two way, that is if my topic is this article, the association is "is authored by" and the occurrence is "Ed Stevenson," the inverse is also true - that is Ed Stevenson (topic) authored (association) this article (occurrence).
It is beyond this introductory article to fully explore the differences between the two and much work has been done in that area. Additionally, the W3C has started a RDF/Topic Maps Interoperability Task Force to look for interoperability between the two. See http://www.w3.org/2001/sw/BestPractices/RDFTM/ for more information.
First steps for publishers
So if you never knew about the Semantic Web but now have the overview, what should you do next? It can be difficult to take the intellectual concepts behind the Semantic Web and apply them to practical day-to-day use in a publishing process. But it is important to be aware of the issues and the potential they have. The following are a few suggestions on preparing your publishing organization for the Semantic Web.
Consider using RDF if you are implementing or re-engineering or enhancing any process capturing metadata. Even if the full power of RDF is not harnessed initially (which it most likely will not be), starting down the path is the first step. There will be more tools and reusable code for translating RDF.
If you are defining or building metadata (or taxonomies or ontologies) look to industry standards first. Consider Dublin Core and PRISM for basic metadata and look to industry specific standards as well (like IEEE and NISO). Borrow where you can.
Value librarians on your staff. They are important now, but are generally undervalued. They will be critical in expanding taxonomies into ontologies and managing the complex relationships.
See the links mentioned in the interview with David Wood in this issue to get some hands-on experience with Semantic Web tools.
Keep an eye on Semantic Web topics through news groups, publications, web sites, etc. Some Semantic Web experts predict the health sciences industry to be some of first adopters of semantic technologies. See the next section for good resources to learn more of the basics as well as stay on top of the latest news and trends.
Monitor the actions of publishers who are using Semantic Web technologies and how they make them worthwhile.
Further reading
In addition to the links found within the document, the following offer good information on the Semantic Web (and were consulted for this article):
W3C RDF Primer
TAO of Topic Maps
O'Reilly's XML.com offers plenty of informative articles all grouped together under a link from the main left navigation: http://www.xml.com/semweb/
Sunday, March 22, 2009
09书单
年又过年,去年在写在译的书又长出了一茬,又是时候订一份今年的读书计划。
架构师类
架构类的书从来都很少,今年又长出两本来。
- 《Beautiful Architecture》 --《Beautiful Code》的姐妹作,里面有三成的架构是自己感兴趣的,已经有国内出版社拿下了,见架构师的唐诗三百首------O'reilly新书Beautiful Architecture(InfoQ中文站) 。
- 《97 Things Every Software Architect Should Know 》 -- 一个开放的wiki ,O'Reilly 将它发布成书,不知道有没人在翻。
- 《Pattern-Oriented Software Architecture, Volume 4 - A Pattern Language forDistributed Computing》 -- 架构模式的集大成者,号称有人在翻但等了一年中文版还是没翻出来啊。
架构技术类
虽然云计算已经开始代替SOA成为新一代大词,但回顾一下整个SOA出版风潮,自己觉得值得一读不忽悠的居然只有一本《SOA in Practic - SOA实践指南-分布式系统设计的艺术》 。
在热潮彻底退却前,SOA书还在继续出着,OSGI与SCA的书开始出现:
- 《SOA Design Patterns》 -- 又是Thomas Erl的书,很奇怪的连电子版都找不到。
- 还 没出版的呀 --《SOA Patterns》、《ESB Architecture for SOA》、《SOA with Java》、《Open Source SOA》、《OSGi in Action》、《SpringSource dm Server in Action》、《Modular Java: Creating Flexible Applications with OSGi and Spring》、《Understanding SCA》、《Apache Tuscany in Action》
编程匠师类
立志做一个匠师的人,今年会比较幸福。
- 《Beautiful Code - 代码之美》 -- 很有经典潜质的一本,去年没有读完今年继续。
- 《Produtive Programmer - 卓有成效的程序员》 -- Thoughtworks中国翻译的,看了下样章,熊节(透明)的翻译依然是这么好,见《卓有成效的程序员》推荐序:做一个懒人(InfoQ中文站) 。
- 《Clean Code: A Handbook of Agile Software Craftsmanship》 -- Rober。C大叔的书,不知道谁在翻,应该很容易翻啊,到后面大段大段都是代码。
- 《Effective Java中文版(第2版)》 -- 特别感谢俞黎敏同学送的书,这里推荐一把了。
bash编程
bash编程
bash脚本编写教程 说明,这部教程是我在网上找到比较经典的BASH中文教程,对新手学习bash脚本,bash编程的好文章。 建立一个脚本 |
The Stony Brook Algorithm Repository
Algorithm Implementations in Java
- JGraphT: Java graph library (Library) NEW
- Connected Components
(9) , Drawing Graphs Nicely(9) , Graph Data Structures(7) , Shortest Path(9) , Topological Sorting(8) , Traveling Salesman Problem(5) , Vertex Cover(9) - Java Collections (Library) NEW
- Calendrical Calculations
(9) , Dictionaries(8) , Median and Selection(9) , Priority Queues(8) , Searching(9) , Set Data Structures(9) , Sorting(9) - Weisses Data Structure (Application)
- Dictionaries
(9) , Kd-Trees(5) , Priority Queues(9) , Searching(8) , Set Data Structures(5) - JDSL: Java Data Structures Libary (Library) NEW
- Connected Components
(8) , Dictionaries(9) , Graph Data Structures(8) , Minimum Spanning Tree(8) , Priority Queues(9) , Topological Sorting(8) - GNU Classpath: an GNU Java API Library (Library) NEW
- Dictionaries
(7) , Priority Queues(8) , Set Data Structures(8) - JUNG: Java graph data structure (Library) NEW
- Connected Components
(9) , Graph Data Structures(9) - JScience: comprehensive Java library for the scientific community. (Library) NEW
- Determinants and Permanents
(9) , Solving Linear Equations(9) - JAMA : A Java Matrix Package (Library) NEW
- Determinants and Permanents
(9) , Solving Linear Equations(8) , Matrix Multiplication(5) - Samest Spatial Index Demos (Animation) NEW
- Kd-Trees
(9) , Nearest Neighbor Search(7) - JGraphEd: Java Graph Editing application (Application) NEW
- Planarity Detection and Embedding
(9) - Prof Harold Thimbleby's The Chinese Postman Problem (Application) NEW
- Eulerian Cycle / Chinese Postman
(9) - Biojava: A Java framework for processing biological data. (Embedded) NEW
- Suffix Trees and Arrays
(9) - Parallel Random Number Generation (Application) NEW
- Random Number Generation
(8) - JGraph: Java Graph Visualization and Layout (Library) NEW
- Graph Data Structures
(8) - JGAP: Java Genetic Algorithms Package (Library) NEW
- Constrained and Unconstrained Optimization
(8) - Scott Cotton's graphlib (Library) NEW
- Transitive Closure and Reduction
(8) - Colt Project (Library) NEW
- Determinants and Permanents
(5) , Solving Linear Equations(7) , Matrix Multiplication(5) - Bruno R. Preiss's books with source (Application) NEW
- Graph Data Structures
(5) , Priority Queues(5) , Set Data Structures(6) - JFLAP: Formal Languages and Automata Theory (Application) NEW
- Finite State Machine Minimization
(7) - Bioalgorithms' Longest Common Subsequence (Application) NEW
- Longest Common Substring
(7) - QOCA Project (Library) no updates since 2001 NEW
- Linear Programming
(7) - 3D Convex Hull algorithm in Java (Application) no updates since 1999
- Convex Hull
(4) , Voronoi Diagrams(5) - GA Playground (Library)
- Traveling Salesman Problem
(3) , Constrained and Unconstrained Optimization(4) - Java Compatible Toolkit (Application) no updates since 1998
- Finite State Machine Minimization
(3)
Go to Main Page This page last modified on 2008-07-10 . www.algorist.com