Home
School Stuff
Java on FreeBSD
Back Up FastMail
Contact

vee
vee themes
veefu!
Perl-FLaT
PatchLodge
Google
 

Tue Dec 18 17:01:55 EST 2007

happy holidays

--

The Semester

Wow, it's been a little while since I posted anything.  I've been
pretty busy with school and work, but now that  the  semester  is
basically finished I though I should write something to show that
I am not dead :).

I took a distributed operating systems and a theory  of  computa-
tion  class.   The OS class was pretty interesting, but I wish we
spent more time on distributed algorithms.  A  lot  of  time  was
wasted  on  a  project.  The goal of the project wasn't silly, it
was the framework in which we had to implement the code that  was
the  pain.   It came down to simulating a wireless sensor network
using this packages called "TinyOS".  The latest version might be
a  tad  more bearable, but we were stuck using an old version.  I
am certain that we could have created our  own  (discrete  event)
simulators  from scratch in a much shorter amount of time, and we
would have probably learned more about the actual problem itself.
Overall the class was good, since I did learn some cool new algo-
rithms - a couple well enough, in fact, to add Wikipedia articles
on them :).

The second class on the theory of computation provided a nice re-
fresher course on finite automata.  Unlike the theory class I had
when pursuing my MS, we got to spend a significant amount of time
on context-free languages, push-down  automata,  and  Turing  ma-
chines.   We  also  spent  a  decent amount of time on complexity
classes, such as P and NP.  I learned a lot, and I am hoping  the
CS department here offers some graduate level classes on the sub-
ject. If not, there are always the MIT  OpenCourseware  offerings
on the subject.

In  Spring, I am taking a graph theory class and a graduate level
programming languages class.  In the PL class, we'll most  likely
be  writing  compilers and such - which is a pretty cool thing to
do.  Also next semester, I am going to be  taking  the  program's
qualifier  exam;  and this means that if I pass, I'll have to get
serious about picking an adviser,  committee,  and  developing  a
plan of study.  I am looking forward to the change and focusing a
bit on things in which I am interested, but the test will not  be
easy.

The Break

I  am going to take advantage of the break to work on a couple of
things my mind's been drifting towards.  One is  a  problem  sug-
gested to me by one of the CS professors.  It is interesting, and
straightforward enough to keep my attention; in otherwords I find
it  easy  to  get obsessed with it.  I also would like spend some
time working on the DFA->RE transformation in FLaT.  I've started
to  implement  a  version of an FA that contains "regular expres-
sion" objects as its transition labels, but I have to  go  a  few
steps  further.   In order to do the DFA->RE transformation, I am
going to implement state elimination, and this will mean that the
RE-objects-as-labels  will be interacting using the usual regular
expression operators.

Artificial Life

I read a very interesting article [1]  today  that  talked  about
some  efforts  scientists  are  undertaking to create "artificial
life."  This means that they are inventing the entire  strand  of
DNA  in the lab.  They are using existing DNA to cheat a bit, but
it is still an interesting concept.  This got me  thinking  about
how exactly DNA works to encode all the complex machinery and in-
teractions inside of a life form. I think that any human, no mat-
ter how smart would have to cheat in this way.  It seems virtual-
ly impossible to start from scratch.

Given the recent hours and days spent  contemplating  Turing  ma-
chines,  the languages (programs) they accept, and their inherent
limitations, it made me wonder about a couple of things. For  ex-
ample,  is  it  possible  to  reverse  engineer  DNA?  History is
wrought with people saying, "that's impossible", but if one real-
ly  thinks  about what it means to reverse engineer DNA-as-a-pro-
gram (i.e., set of instructions), the mind should  shut  down  by
the  sheer  size of the problem.  In fact, this seems akin to in-
quiring about the properties or function  of  a  Turing  machine,
given  the description of the machine itself - which is well know
to be "undecidable".

It can be said that DNA doesn't just encode a single machine.  It
encodes many machines, and all of these machines must interact in
concert with one another.  Many unrelated  machines  and  systems
share  the  same parts, and modify a seemingly insignificant part
of one machines adversely affects many others. This to  me  seems
infinitely  more  complex  than figuring anything about our silly
models of computation. An organism can also be viewed as the  ul-
timate  "shared  memory" program - and how on Earth could all the
problems that come with shared memory programming be  worked  out
explicitly?

Given that DNA encodes a complex network of interrelated systems,
how does one /really/  engineer  an  artificial  life?   It  just
doesn't  seem possible to start from scratch and design an organ-
ism from scratch.  I think this is beyond the capabilities of hu-
mans.   It  may  be  possible to program little autonomous things
much like computer scientists can create interesting cellular au-
tomata,  but  at  the  end  of  the day creating an organism from
scratch is such an enormous feat that  it  seems  impossible.  Of
course, the scientists working in this area are using DNA from an
existing organism (i.e., a working program) to start with.

This is not unlike learning a new language looking  at  examples,
but DNA's encoding is so much more complex than simple human pro-
gramming languages.  DNA is so densely packed  with  information,
that  the only way to see what is in it is to "let it run".  But,
it is not simply a set of instructions contained in the DNA.   It
is instructions on how to construct the machines and systems that
THEN interact at various stages of development and life  to  make
the organism what it is.  On top of this are assumptions based on
the basic laws of physics - and we don't even know what these are
exactly.

To me, a practical computer analogy would liken DNA to a self-ex-
tracting hierarchical and maximally compressed TAR file that con-
tains  a set of programs. Hierarchically compressed in that vari-
ous levels of compression reveal different programs that are then
used  to  either  uncompress  other parts, or generate additional
code and instructions that are to be executed by  other  machines
or  go on to create yet more code.  It is a chain reaction of in-
structions creating machines that create  more  instructions  and
machines.   The more machines and systems that are set in motion,
the more that can be done as these machines  interact  and  grow.
The  sheer  complexity of it all is mind blowing, and I challenge
anyone to design such a system from scratch. It is in my mind in-
finitely more complex than trying to model a chemical reaction or
something like a nuclear explosion  -  and  human  technology  is
barely at the stage where it can do either of these very well. In
fact, it is similar to the study of algorithms that  asks,  "give
some string of 1's and 0's, what is there a smaller way to gener-
ate this sequence that is /smaller/ (in terms of computer memory)
than a program that simply prints the string explicitly?  In oth-
erwords, can we find a program or algorithm that  generates  this
string or sequence of symbols? Translate this to the task of cre-
ating artificial life from scratch. Assuming one has figured  out
how the pieces and parts of the organism will work together - how
do you "grow" this system by means of some set of  primitive  in-
structions?  The instructions here are obviously the DNA, but the
problem just seems intractable to me.

It is as if we've been given some alien technology to reverse en-
gineer - but who's to say that humans are even capable?  Who's to
say that /anyone/ or being (save your Supreme  Deity  of  choice)
has  the  capacity to understand the interactions taking place? A
proposed experiment to a human's capability would  be  to  create
such a compressed tarfile as the one described above - except one
that would obviously have to be much simpler since a human is de-
signing it. The challenge would be for the investigator(s) to de-
termine accurately what is happening. In other words,  one  would
have  to construct a model of this unknown system.  Of course one
would be given a time limit, but the idea would  be  to  see  how
good  humans are at figuring out systems. In summary, the experi-
ment is to start with a known system, allow people to observe how
it  works  in a way similar to how people observe the development
and life functions of simple organisms, have the subjects  create
a  model  of  what they think is going on, then compare it to the
actual system. I believe the results will be shockingly bad, even
with the help of techniques like Markov Chains.

Another thought that comes to mind is, if a Turning machine can't
determine what any other TM (including itself) does, how  can  we
(the  product of DNA instructs) determine how life works with the
degree of certainty that would allow us to create real artificial
life or intelligence?

Well,  sorry for the rantings of a mad man - that'd been building
up in me for a while.  Over the next week or so, I'll be cleaning
up this post and adding more thoughts in other ones. Have a Merry
Christmas and a Happy New Year.

[1] http://www.washingtonpost.com/wp-dyn/content/article/2007/12/16/AR2007121601900.html



--
Powered by vee
Copyright © 2006-2008
FreeBSD
Perl
LSU HPC
LONI