May 2006 Archives
2006-05-31 20:01:28
Algorithm Animation
J. L. Bentley. Tools for experiments on algorithms. In R. F. Rashid, editor, CMU Computer Science: A 25th Anniversary Commemorative, pages 99--23. ACM Press, New York, 1991.
I had thought that Algorithm Animation is for education, however Bentley told me, at this paper, that Algorithm Animation is also useful for algorithmic experiments. He gave some important suggestions. I just pick some of it to here, since some were in previous posts.
-
Write your workhorse program well.
Build the experiments around, not into, your program. Use a single program for animations, experiments, and production runs; the various views of the computation can help to identify bugs.
Animate your program.Some web sites about Algorithm Animation are following:
-
ALGAE is a framework for quick construction of algorithm animations. ALGAE is aimed at computer science instructors who, like myself, employ LCD overhead pads or projectors to display computer video output in the classroom or who teach web-based courses in programming and data structures.
The Complete Collection of Algorithm Animations (CCAA) is a comprehensive collection of links to all of the algorithm animations that can be run over the Internet. Each of these sites provides animations that aide the learning and understanding of algorithms.
I also found a interesting web site, TefoA - Testbed for Algorithms
2006-05-31 16:17:21
Sociobiology: The Phoenix effect
A spore-forming bacterium can escape from social collapse and extinction with a single mutation that has a dramatic effect. Here is evidence that a cooperative system can recover from the very brink of destruction.
The interesting part is that the The Phoenix effect is just based on mutation-level. However, I don't know what benefits is from cheating?The paper ``Evolution of an obligate social cheater to a superior cooperator,'' by Francesca Fiegna, et. al. seems also interesting, but there are too many biological terms. :(
2006-07-05 Update: Another related article, R. Craig MacLean and Ivana Gudelj, Resource competition and social conflict in experimental populations of yeast, Nature 441, 498-501 (25 May 2006)
2006-05-31 14:15:21
Interesting Links or News
However, it also make me not so arduous to digest what I read on this blog...:)
A good news is that the global ozone layer should be recovered. I am not expert on this field, but it is a good news for everyone living on earth. More detail refer to ScienceDaily: Earth's Ozone Layer Appears To Be On The Road To Recovery.
``British Professors Seek to Cut Ties to Israeli Scholars'' is a weird news. I believed that the professors or faculties have rights to present his opinions about religions, politics, etc. However, it seems not suitable to boycott Israeli academe at the level of faculty union. This movement seems like the movement of fair trade coffee. The behavior might be good for personal, but I think that they threatened to boycott academic exchange for political goals is a threat to academic freedom.
Michael Mandel's column ``Bordering on Absurdity'' caught my eyes, too.
What are the objections to such an open-borders policy? The obvious one is that letting in a higher number of immigrants would drive down wages. However, economist David Card, of the University of California at Berkeley, has shown that there's little evidence that pay has gone down significantly in cities with large immigration populations (see BW Online, 5/08/06, "The Economic Case For Legalizing Illegals").
I found it out and read it.In a 2005 study, Borjas and fellow Harvard economist Lawrence Katz calculated that the arrival of unskilled immigrants from 1980 to 2000 depressed wages of high school dropouts relative to those of educated workers by 8%. But in a less noticed part of the study, they found that wages of high school dropouts fell only by 3% to 4% if employers installed new machinery to make more productive use of workers. That's an "almost undetectable" difference from his own results, says Card.
2006-05-26 21:50:32
CPSC 590: Research Methods in Computer Science
CPSC 590, Research Methods in Computer Science, September 2003
An introduction to methods used in computer science research. Topics include techniques and conventions in research methods, evaluation approaches, and presentation of results.
2006-05-24 17:21:25
Big Bad News
----- Forwarded message from Frank K?ster
From: Frank K?ster
From: Thomas Esser
Hi,
I am sorry to announce some bad news about teTeX: there won't be a next
release. To be more precise: there won't be a next release done by me.
In the past, preparing a release ment to spend all my spare time for
about 2-3 month on getting the release out (in addition to doing regular
updates on yources and the texmf tree). The time spend on it increased
with the size of the distribution.
My current development tree (just as it is today) is available from
rsync://tug.org/tetexdevsrc/
so if anybody wants to pick it up, just do it.
Basically, teTeX consists of a source tree and a texmf tree with fonts,
macros, configuration, etc.
The source tree of teTeX-3.0 is included 100% in TeX Live
(http://www.tug.org/texlive/) which is released once per year. So,
there is no doubt for me that all the stuff that is now included in the
source tarball will be maintained actively. There are some parts which
have been originally written by me (scripts such as updmap, texconfig,
fmtutil) and I think that it won't be a problem for me to continue to
maintain these things (and submit updates into the TeX Live repository).
The texmf tree of teTeX is a monolitic distribution of individual CTAN
packages. I am unsure if someone else wants to maintain such a monolitic
monster package. I am sure that it would be much better to set up a
package based infrastructure, such as MikTeX's. This infrastructure was
recently ported to Linux, so using this might be a good start. Another
possible source of information about creating TeX packages is again TeX
Live. The work done there can be used to create debian packages in a
mostly automated way.
All the best,
Thomas
PS: Follow-Up set to tetex@dbs.uni-hannover.de.
2006-05-24 17:18:10
Things in Forthcoming Weeks
-
Compiler Construction: 6/2 project 3
NSC Project: Approx. algorithms survey, the defition of preformance ratio of BIDS problem. (6/5)
Workshop on String Processing and Approximation Algorithms: I might need to read something more about SDP.
M.X. Goemans and D.P. Williamson, Improved Approximation Algorithms for Maximum Cut and Satisfiability Problems Using Semidefinite Programming, J. ACM, 42, 1115--1145, 1995. And M.X. Goemans and F. Rendl, Semidefinite Programs and Association Schemes, Computing, 63, 331--340, 1999. Paper review: 5/31 I will attend the Workshop on BioAlgorithmics. I need read more bio-algorithms before it.
2006-05-22 01:24:41
A Short History of Computational Complexity
It is an interesting article.
Quickly though we discovered that the basic Turing machine model fails to account for the amount of time or memory needed by a computer, a critical issue today but even more so in those early days of computing. The key idea to measure time and space as a function of the length of the input came in the early 1960's by Hartmanis and Stearns. And thus computational complexity was born.
Berman and Hartmanis [BH77, HB78] formulated their isomorphism conjecture. The conjecture stated that all NP-complete sets are P-isomorphic (that is, isomorphic via polynomial time computable and invert-ible isomorphisms).
I had surprised that there are so many terms about complexity such as Algorithmic Complexity, Computational Complexity, Proof Complexity. This article explains some of them like Structural Complexity which studies the structure of classes of computational complexity, but I were misled by its name to that it is about measuring something of structures of (mathematical) objects.Another very interesting section is Probabilistic Complexity.
In 1977, Solovay and Strassen [SS77] gave a new kind of algorithm for testing whether a number is prime. Their algorithm flipped coins to help search for a counterexample to primality. They argued that if the number was not prime then with very high confidence a counterexample could be found.
This algorithm suggested that we should revise our notion of evencient computation". Perhaps we should now equate the evenciently computable problems with the class of problems solve in probabilistic polynomial time. A whole new area of complexity theory was developed to help understand the power of probabilistic computation.
In 1988, Ben-Or, Goldwasser, Kilian and Wigderson [BGKW88] developed the multiprover interactive proof system. This model has multiple provers who cannot communicate with each other or see the conversations each has with the verifier. This model allows the verifier to play one prover off another.
Fortnow, Rompel and Sipser [FRS94] show this model is equivalent to probabilistically checkable proofs, where the prover writes down a possibly exponentially long proof that the verifier spot checks in probabilistic polynomial time. They also show that every language accepted by these proof systems lie in NEXP, nondeterministic exponential time.
In 1990, Babai, Fortnow and Lund [BFL91] show the surprising converse --- that every language in NEXP has probabilistically checkable proofs. Babai, Fortnow, Levin and Szegedy [BFLS91] scale this proof down to develop
"holographic" proofs for NP where, with a properly encoded input, the verifier can check the correctness of the proof in very short amount of time.
In 1992, Arora, Lund, Motwani, Sudan and Szegedy [ALM+98] building on work of Arora and Safra [AS98] showed that every language in NP has a probabilistically checkable proof where the verifier uses only a logarithmic number of random coins and a constant number of queries to the proof.
Arora et. al. show that, unless P = NP, every MAXSNP-complete set does not have a polynomial-time approximation scheme. For each of these problems there is some constant $\delta>1$ such that they cannot be approximated within a factor of £_ unless P = NP.
Sections 7, 8, 9 introduce some fields of complexity that are familiar to CS students. (OK, I am ignorant and ill-informed.)
Descriptive complexity aims to measure the computational complexity of a problem in terms of the complexity of the logical language needed to define it. As is often the case in complexity theory, the issues here become more subtle and the measure of the logical complexity of a problem more intricate than in computability theory. Descriptive complexity has its beginnings in the research of Jones, Selman, Fagin [JS74, Fag73, Fag74] and others in the early 1970's. More recently descriptive complexity has had significant applications to database theory and to computer-aided verification.
The ground breaking theorem of this area is due to Fagin [Fag73]. It provided the first major impetus for the study of descriptive complexity. Fagin¡¦s Theorem gives a logical characterization of the class NP. It states that NP is exactly the class of problems definable by existential second order Boolean formulas. This result, and others that follow, show that natural complexity classes have an intrinsic logical complexity.
2006-05-17 22:51:56
Complex Networks
I might chose the topics about complex network, since my NSC project is about graph theory and I am interested in complex science.
Theoretical Computer Science, Volume 355, Issue 1, Complex Networks (6 April 2006)
Complex networks are large networks encountered in practice that seem to lack any apparent structure. Typical complex networks include internet topologies, web graphs, peer-to-peer networks, social networks (cooperation between people, economical exchanges, friendships, and others), biological networks (protein/gene interactions, brain, food webs), linguistic networks (co-occurrence graphs, synonyms), and many more. Precisely defining a complex network is a tricky proposition since it is hard to set up a definition that is broad enough to capture the above examples, yet restrictive enough to make mathematical sense.
Some other articles in which I am interested:
-
Efficiently covering complex networks with cliques of similar vertices
Structural and algorithmic aspects of massive social networks
Network robustness and graph topology
Maximizing the spread of influence through a social network
Constructing and Analyzing a Large-Scale Gene-to-Gene Regulatory Network-Lasso-Constrained Inference and Biological Validation
Convergence law for random graphs with specified degree sequence
Genome-Scale Computational Approaches to Memory-Intensive Applications in Systems Biology
Static analysis for systems biology. It is not directly about complex network.
2006-05-11 20:51:48
Workshop on BioAlgorithmics
I might need to improve my ability of listening and the knowledge about computational biology.
2006-05-10 03:44:27
Bibliography reference manager
It also could link to the e-papers on hard-disks, although it can't not "manage" files in fact, this feature helps me can reduce the long file name to short file name as bibtexkey.
Some colleges will buy some softwares like Ref. Manager to help students to manage their bibliography file, however they are too expansive for personal usage. It might mean that the bibliography is useless after student graduating, so I think the free or cheap bibliography reference managers are necessary.
However, JabRef is specific to Bibtex, there are some drawbacks for people who don't use bibtex. For example, in LaTeX the format of citation is controlled by bibtex, so that JabRef doesn't worry about it, however it is drawback for not latex users. i.e., a imaged article,
FRAXIS Lu, "P=NP is trivial," J. ACM, vol. 100, pp. 20-22, 2010.
According to the requirements of different journals, it might transform to other format like
Lu, FRAXIS, "P=NP is trivial," J. ACM, vol. 100, pp. 20-22, 2010.
or
FRAXIS Lu, "P=NP is trivial," J. ACM (2010), vol. 100, pp. 20-22.
But, JabRef can't do it. (However, it is not his fault.)
2006-05-08 02:00:01
Language
2006-05-08 00:05:20
I made a mistake
I just thought such .bib file is a text file containing only bibliography data of the paper "Ordered Vertex Partitioning", but I were wrong! It is the whole bibliographies data of DMTCS. Thus, my account of CiteULike became too mass to be useful for me.
Ohmmm....
2006-05-07 18:42:36
Non-Standard Logics
Peter Suber maintains a bibliography of Non-Standard Logics. Although I am not interested in logic, it is still fun to know how many kinds of logics is in the world. Nevertheless, this list is not complete.
* Categorical logic * Combinatory logic * Conditional logic * Constructive logic * Cumulative logic * Deontic logic * Dynamic logic * Epistemic logic * Erotetic logic * Free logic * Fuzzy logic * Higher-order logic * Infinitary logic * Intensional logic * Intuitionistic logic * Linear logic * Many-sorted logic * Many-valued logic * Modal logic * Non-monotonic logic * Paraconsistent logic * Partial logic * Prohairetic logic * Quantum logic * Relevant logic * Stoic logic * Substance logic * Substructural logic * Temporal (tense) logic
2006-05-07 18:32:36
the world of computability and complexity
It is a diagram of the world of computability and complexity!!!
2006-05-07 02:35:42
Format of Note Make Different
At present, I decide to stop reading, because the materials of it don't interest me. The notebook, unlike others in this blog, will not be put on Internet. That's because this notebook is in PDF format.
Although the content of this note is as poor as my other notes, that are written in HTML format, in this blog, I still feel some different between them. The PDF format seems more formal than HTML format. so that putting it on Internet will make me embarrassed because of the significant difference between content and form.
However, I will read Martin Davis' Computability and Unsolvability as planned before. (It's fun that the book which I checked out from library is donated by prof. C. L. Liu.)
2006-05-07 00:24:43
LaTeX and BibTeX
Some introductory articles for BibTeX
-
How to efficiently use Bibtex by Helge Kreutzmann
A summary of BibTex by Xavier D Ácoret
LaTeX Tricks: BiBTeX --- Creating a List of References by Peter Newbury
Tools :: Database Management
-
JabRef is an open source bibliography reference manager. The native file format used by JabRef is BibTeX, the standard LaTeX bibliography format.
gBib is a user-friendly editor and browser for BibTeX databases. You can use it also to insert citations inside a LyX document. (For linux)
BibDB - A BibTeX Database Manager for DOS and Win32.
Tools :: Toolkits
-
BibTeX bibliography tools
Biblook/bibindex
The XdkBibTeX Library. This library provides parsers and utility functions for the BibTeX files .bib. The core of the library is a C++ version of the parser compiled as a library named libxdkparsers.
Resources Collection
LaTeX or BibTeX for specific fields
-
LaTeX for Logicians
Nelson H. F. Beebe's Bibliographies Page
BibTex for Finance/Economics Journals
LaTeX Bibliography Styles Database
Typesetting pseudocode in LaTeX (For Algorithm)
LaTeX and BibTeX for EATCS Bulletin
I also found some style files, i.e., acm.bst, algorithmica.ltx, ieeetr.bst, talg.ltx, acmtrans, computational-complexity, ieeetran, kluwer, nature, siam. e-jc.bst.
However, many journal publishers provided related files for submitter.
2006-05-05 21:25:52
Personal Research Notebook / Journal
Actually I have this idea for a long time, so that I read some books such as "The Craft of Research", "Writing the Laboratory Notebook", and many many others. Nevertheless, those books do not focus on the notebook for non-experimental record use or lack for details.
Thus I just googled for the template of research notebook, and luckily I found a web page for the non-laboratory fields --- Notes on the Personal Research Notebook / Journal. This web page doesn't really have rich content. it just tell people "notebooks are helpful even for non-laboratory fields".
However, from the links and links in it linked, I found a book which seems useful --- Notebooks of the Mind : Explorations of Thinking, by Vera John-Steiner. And I pretty like this article "A Letter to Research Students" by Duane A. Bailey who is a computer scientist, and "Informal Guide to CS" on his homepage. (It seems not written by him.)
2006-05-04 22:32:03
BioLinux
Dose a bio-science specific distribution of Linux exist?
The answer is "YES"! That's bioknoppix.
Bioknoppix is a customized distribution of Knoppix Linux Live CD. With this distribution you just boot from the CD and you have a fully functional Linux OS distribution with open source applications targeted for the molecular biologist. Beside using some RAM, Bioknoppix doesn't touch the host computer, being ideal for demonstrations, molecular biology students, workshops, etc.
Nevertheless, the last update time seems 2004-11-15.The other is BioLinux, that does not another Linux distribution, but to provide add-on RPM packages for existing Linux distributions. It seems no update after 2005.
However not all projects stopped, BioLinux-BR Project, that named for Bioinformatic + Linux + Brazil, released BioLinux-BR 2.1 at Jan/26/2006.
Firedragen (not a name, an ID on BBS) recently announced that he will start a Biolinux Project too. I expect it.
2006-05-04 17:53:51
Write Down The Algorithm
-
Pidgin Algol
Pseudocode
Air code
PSEUDOCODE STANDARD. Actually, it is a document of coding style of pseudo code.
What is Air Code, and What's its Purpose?
2006-05-02 22:53:31
Reading Computer Programs: Instructor's Guide and Exercises
The authors also maintain a up to date annotated bibliography -- Code Reading and Program Comprehension.
This paper spent much time in discussing how people read programs. However, it might interest people who study software engineering management or cognitive science. This paper also contains some example codes and annotated bibliography, so that it is just 50 pages excluding codes and bibliography.
The approaches of reading programs are very code-specific, i.e., our choice of reading program bottom-up or top-down is according to the quality of codes and completeness of documents.
4.3. Tools and Techniques
There is 30 suggestions in this section.
-
Be aware that code and comments (or other documentation) may not agree. The code may be correct and the comments wrong, or the reverse. Both may be wrong.
Use indentation to help understand structure. However, incorrect indentation (more likely to come from a human than a compiler or prettyprinter) may be misleading.
Try to build a model of the style conventions used in the program. If, for example, a consistent scheme has been used for identifiers, this knowledge can be used to help understand the meaning of newly encountered identifiers. It is important to read the program with the programmer's conventions, rather than your own, in mind.
Be wary of apparently analogous functions performed in non-analogous ways.
Consider the possibility that the programmer did not know what he was doing. (If a reader need to make this decision, this code might be not worth to read.....)
Watch out for code written to overcome compiler or computer limitations or code containing apparently magic numbers.(That's why they are magic.)
Watch out for use of nonstandard language features.(I.e., read and understand the functions of smallest structured code units, "if ... else ...." et al., and read larger code fragments by those knowledge.)
Odd-looking arithmetic operations may be required to maintain accuracy. Consider possible roundoff implications.
Because changes to the code often introduce errors and inconsistencies, look for evidence of changes.
If, after a good deal of study, a piece of code is making no sense, ask another programmer to look at it. Consider explaining to him what you think you do know.
Search for information, particularly in documentation, that relates objects in different knowledge domains, for example, comments that associate variables with problem-domain objects.
Be wary of objects that have the same identifier but different scopes. Reasoning about the wrong objects can be frustrating.
Be wary of objects having nearly the same names, particularly those whose identifiers differ by a single character.(On the other hand, guess the thoughts of programmer. It might helps for understanding codes just like programming style, however the trade-off is hard to chose.)
Particular code may be an artifact that no longer serves a function.
Be sure you make no inessential assumptions when reasoning about concurrent programs.
Be alert for variables that serve more than one function or that are used inconsistently, as they can mislead the reader.
The effect of apparent bugs in the program can be undone by an inverse bug somewhere else.
Use symbolic execution to determine function. (I can't understand the meaning of symbolic execution. Reference: Littman, D. C., Je. Pinto, S. Letovsky, and E. Soloway. Mental Models and Software Maintenance. In Empirical Studies of Programmers: Papers Presented at the First Workshop on Empirical Studies of Programmers, June 5-6, 1986,Washington, D.C., E. Soloway and S. Iyengar, eds. Norwood, N.J.: Ablex, 1986, 80-98. Reprinted in J. Syst. and Software 7, 4 (Dec. 1987), 341-355.)
Use code substitution to verify or refine hypotheses.
Tracing code with test data, whether by hand or using a symbolic debugger, will not by itself tell you what function the code performs. However, it can help suggest some hypotheses and eliminate others.
Be alert for literals that are conceptually distinct but that happen to have the same values.
In languages that permit operator overloading, be sure the operator you think you have is really the one you do have.
Be willing to abandon hypotheses for which there is insufficient evidence. (It is my bad habit, too.)
Use program slicing [Weiser81]. Throw out parts of the program irrelevant to the particular function or state of the program of interest, in order to study the program.([Weiser81] Weiser, Mark. Program Slicing. Proc. 5th Int. Conf. on Software Eng. New York: IEEE, 1981, 439-449.
``Program slicing is a method used by experienced computer programmers for abstracting from programs. Starting from a subset of a program's behavior, slicing reduces that program to a minimal form which still produces that behavior. The reduced program, called a slice, is an independent program guaranteed to faithfully represent the original program within the domain of the specified subset of behavior.
Finding a slice is in general unsolvable.'') Use an editor or browser to traverse the code. Editors that support multiple windows can show several parts of the program at once. File search tools such as UNIX grep can be used to find identifiers that may be in one of several files. In the absence of tools like a cross-reference generator, such unlikely tools as spelling checkers can be useful for listing the identifiers used in the program. Traditional debugging techniques can be used to read code. The addition of print statements, for example, can be useful in verifying hypotheses. Read programs with a cross-reference listing, structure chart, or similar summaries of program information close at hand. It is sometimes useful to generate such charts by hand if they cannot be obtained automatically.
2006-05-20 Update:
William wrote an entry which is related on this topics on his blog. [Link] (in chinese).
2006-05-02 18:53:16
Journal Price
2006-05-01 09:14:55
Note on An Introduction to Scientific Research
I am interested in two types of books about research now, one is how to do theoretical research, another is how to do empirical research in CS. The first kind of books seems not much; in fact, I don't know any. Most books similar to this topic are about solve problems, like Polya's great books. I found one book that seems worth to read, The Mathematical Experience, Study Edition by Philip J. Davis, Reuben Hersh, Elena A. Marchisotto, G.-C. Rota. )(It seems for math teaching.)
Another kind of books, I had noted in earlier post, Note on Empirical Methods in CS and AI, and I have read some articles in it; I will read Empirical methods for artificial intelligence by Paul R. Cohen, for learning some details. Furthermore technical skills are important, such as Reading Computer Programs: Instructor's Guide and Exercises by Lionel E. Deimel and J. Fernando Naveda, Programming Optimization Techniques, Performance Analysis Tools. (Actually, I need to write a term-project of Compiler Construction, thus it will be a good motivation to learn such techniques.)
Ref. : An Introduction to Scientific Research, by E. Bright Wilson.
Chapter 2 : Searching The Literature
At First, the author discussed the importance of searching literature as usual; he classified literature by structure of the materials, i.e., Encyclopedias, Literature guides, Handbooks, Books, Reviewed Journals, Abstract and indexing journals.
About literature guides, examples are too old like ``Guide to the literature of mathematics and physics'' by N.G. Parke III, 1947. I can't really understand what literature guides is? Therefore I modified the name of Parke's book and keyed it in google, then books and resources appeared.
-
Brown Library Resources: Computer Science Research Guide
Computer Science and Computing: A Guide to the Literature by Michael Knee
COMPUTER SCIENCE: A Brief Guide to Reference Resources
Dartmouth College Library :: Computer Science Research Guide - Advanced
SULAIR: Mathematical & Computer Sciences Library: Guide to Resources in Computer Science
Computer Science Resources: A Guide to Professional Literature by Darlene Myers
Guide to Reference Sources in the Computer Sciences by Ciel Carter
About Technical Book Review Index, I knew that some publications like The American Mathematical Monthly, ACM SIGACT News contains some book reviews and it is easy to search in their databases. Nevertheless, it is not easy to find out a book review for certain books among databases.
The author suggested that search literature in order of structure, i.e., encyclopedias for general treatment, handbook for broad discussion, books for detail, survey or review papers, and current original papers.
Finally, at the rest of this chapter, the authors discussed the topics ``Notes and Indexes'' which is one of topics that I most want to know, but unfortunately the author focused on indexing and managing notes of literature. Those methods (management systems) are out of date in the computer age. The thing I really want to know is how to noting literature, but the author didn't discuss about it.
