home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #27 / NN_1992_27.iso / spool / talk / origins / 14535 < prev    next >
Encoding:
Internet Message Format  |  1992-11-20  |  4.7 KB

  1. Path: sparky!uunet!gatech!nscf!lakes!kalki33!system
  2. From: kalki33!system@lakes.trenton.sc.us
  3. Newsgroups: talk.origins
  4. Subject: Re: Laying a trap
  5. Keywords: Computer program, random, mutation, chess
  6. Message-ID: <c28HuB7w165w@kalki33>
  7. Date: Thu, 19 Nov 92 15:56:47 EST
  8. References: <1992Nov18.133247.8546@city.cs>
  9. Reply-To: kalki33!system@lakes.trenton.sc.us
  10. Organization: Kalki's Infoline BBS, Aiken, SC, USA
  11. Lines: 100
  12.  
  13. lionel@cs.city.ac.uk (Lionel Tun) writes:
  14.  
  15. > Lets say there is a computer program which `knows' the
  16. > legal moves of chess - lets call it ChessMover.
  17. > ChessMover plays very poor chess because its moves are
  18. > made at random. But it does play very fast. ChessMover
  19. > is small, compact and extremely efficient. But it plays
  20. > bad chess because it has not been designed with any
  21. > chess playing algorithms at all.
  22. > Would it be possible to subject ChessMover to random
  23. > mutations, so that eventually you evolve ChessPlayer,
  24. > a chess program which plays very well, say at master
  25. > level?
  26.  
  27. > For those of you who are not game fans, but more business
  28. > oriented:
  29. > Consider a spreadsheet program such as Lotus123 or
  30. > QuattroPro. Lets say you have a small calculator program,
  31. > like the toy ones which pop up in some windowing front
  32. > ends. Would it be possible to apply random mutations to
  33. > Calculator until it evolves into Spreadsheet?
  34.  
  35. > Please note, both Calculator and ChessMover are small (by
  36. > today's standard) programs, lets say about 2 to 4K for the
  37. > executable. Shreadsheet and ChessPlayer must obviously be
  38. > of a more substantial size (I can't remember how big Lotus
  39. > is). If you like, you can randomly modify the source code
  40. > and compiler, rather than the executables, if you think this
  41. > will make it less brittle. Random modification includes of
  42. > course random additions. You might prefer the source code
  43. > approach as the compiler will reject programs which will
  44. > not even compile, let alone run. If you wish to modify
  45. > the compiler, you can keep a copy of the old compiler to 
  46. > compile it with.
  47.  
  48. These questions are testable in the following sense:
  49.  
  50. 1) Design a universal Turing machine with a particular symbol set, say
  51. the binary set {0,1}.
  52.  
  53. 2) Write a simple program that works (i.e. the machine halts in a finite
  54. number of steps).
  55.  
  56. 3) Subject this program (i.e the program's bit-string) to a series of
  57. "random" mutations that flip bits (change a "1" to a "0" or a "0" to a
  58. "1"), or that add/delete bits at the end (or the beginning) of the
  59. string, or that add/delete substrings, etc... (there are so many
  60. possibilities!)
  61.  
  62. 4) After each mutation, try running the mutated bit string as a program
  63. in the universal Turing machine and observe the results. If the program
  64. is correct (i.e. the machine eventually halts) call this an "admissible
  65. intermediate form" and examine it further to determine just what the
  66. mutated program is doing. If the program doesn't work (i.e. the machine
  67. never halts) then count it as an "evolutionary dead end" and either
  68. allow it to mutate further or discard it and start over from the most
  69. recent admissible intermediate form.
  70.  
  71. 5) If you are not sure whether the machine will eventually halt, then
  72. attempt to dissect the code to determine if it represents a valid
  73. algorithm or not.
  74.  
  75. 6) After a number of trials (probably trillions and trillions), see if
  76. you ever come up with the complete source code for a fantastically
  77. complex purposeful application (designed for the Turing environment of
  78. course, so maybe no video!).
  79.  
  80. Many additional conditions will have to be dealt with, such as:
  81.  
  82. a) the choices of starting strings, their length and bit sequence.
  83.  
  84. b) how many unsuccessful mutations are we willing to allow before we
  85. discard a string as an evolutionary dead end?
  86.  
  87. c) how do we deal with admissible intermediate forms which, although
  88. they are valid algorithms, do not appear to compute anything "useful"?
  89.  
  90. d) should we allow the machine itself to mutate (i.e. randomly change
  91. its next-move function or its transition table)?
  92.  
  93. e) should there be a limit on the allowed size of a string?
  94.  
  95. f) what about programs which are self modifying? In this case, the new
  96. string is not the result of mutation, but it has changed.
  97.  
  98. Sincerely,
  99. Kalki Dasa
  100.  
  101.  
  102.  
  103.        -------------------------------------------------------
  104.       |  Don't forget to chant:   Hare Krishna Hare Krishna   |
  105.       |                           Krishna Krishna Hare Hare   |
  106.       |                           Hare Rama Hare Rama         |
  107.       |                           Rama Rama Hare Hare         |
  108.       |                                                       |
  109.       |   Kalki's Infoline BBS Aiken, South Carolina, USA     |
  110.       |        (kalki33!kalki@lakes.trenton.sc.us)            |
  111.        -------------------------------------------------------
  112.