Let's play a game of 20 questions. You know the rules: Try and guess what it is I'm thinking of by asking me up to 20 yes or no questions.
The questions have to be yes or no, there must be a discrete answer to each question, and if you don't have the answer by 20, you lose and I win.
This is called "decision tree logic" or "tree decisioning", because each question branches off into other questions, hopefully narrowing down to the trunk and root; the object we wish to identify (or the answer we want to reach).
The funny thing about 20 questions is though... As complicated as it may seem (and in fact it IS a very complicated problem from a structured logic standpoint), human beings are really quite good at it.
The reason we're so good at, what is a very complex problem technically, comes down to three unique properties of human thought: Induction (intuitive reasoning), association (relational resasoning), and indiscrete nondeterministic logic.
By unique, I mean that no other animal has exhibited these properties, except in the most basic way; and no computer can duplicate them.
At least, not so far.
Ok... so from this point I'm going to go into a description of how computers "think"... or more accurately how computers solve problems; how that's different from how humans think; and perhaps how computers can perhaps solve problems more like humans do in the future.Some folks have written recently about how AMAZING our current computing power, and the access to information it provides us, really is.
If you're a programmer, a computer scientist, or anyone with a passing fair knowledge of either subject, this is going to be grossly oversimplified for you.
If you have little interest in how computers solve problems, this will bore the hell out of you.
I'm trying to strike a balance between being technically correct, and being understandable and interesting for a layman... And I'll be honest, I don't think I did such a great job doing so.
I'm not sure it is POSSIBLE to do so in this particular case. You can either speak in human language, or in the language of structured logic; and they aren't particularly compatible.
And it is. There is no question, it has changed the world dramatically, and will continue to do so.
We now have, on our desktops, the power to make tens, or even hundreds of billions of calculations every second (a dual processor quad core nehalem can run 150 billion instructions per second across its 8 cores; and each instruction can have MANY binary logic tests in it) ... Hundreds of million, or even billions, in our phones even.
So much computing power is available, in such portable packages; that computers have almost become extensions of our brains. Our, exobrains, as several folks have referred to them.
These exobrains have seemingly huge memories and infinite computing capacity in comparison to our actual brains.
And yet, we actually have a HUGE memory and computing capacity naturally... we just use it in entirely different ways than computers do.
As for our exobrains, we'll never really be able to use that calculating capacity as well as our real brains use theirs, until and unless we make a huge leap in the physical and logical nature of computing; and develop high value logic in hardware (I'll explain what that means as we go along).
Human brains are made up of neurons; and many people over the years have made the easy analogy between neurons and the transistors in our computers.
That analogy is not particularly accurate however; and in many ways is damagingly misleading.
Unlike computers, humans have the ability to use indiscrete and nondeterministic reasoning, to reach discrete and deterministic conclusions; through relation, deduction, and induction.
Computers as they currently exist can't do this, they can only approximate deduction through many binary cycles, and can't even attempt relation or induction; because they use a discrete two value logic. Binary, boolean, zero or one, yes or no.
Humans use, what can be usefully approximated as, a seven value (technically an infinite value, with 7 cardinal points), indiscrete, and nondeterministic logic.
In normal human language (vs. the language of structured logic), humans have an internal decision making structure, where there are seven discrete values (a discrete value in this context is something definite, with no plus, minus, margin of error, wiggle room etc...), with infinite shadings in between them; and any two sets of outputs from the same set of inputs will not necessarily be identical... (though they MAY be - which is what nondeterministic means in this context).
Those discrete values, expressed in terms of structured logic tests, are:
- Yes: Terminate positive
- No: Terminate negative
- Indeterminate alpha: Both yes and no/Equally balanced between yes and no - Ask another question to discriminate until a deterministic value set is reached.
- Indeterminate beta: More yes than no - Ask another question to discriminate until a deterministic value set is reached.
- Indeterminate gamma: More no than yes - Ask another question to discriminate until a deterministic value set is reached.
- Indeterminate delta: There may be an answer, but it cannot be determined at this time, with this information. Gather more information, wait for states to change, or ask a different question.
- Indeterminate Epsilon: NULL, there can be no possible answer under any conditions, terminate or approximate.
Computers can only use two discrete logical values, yes and no, or rather, on and off (well... even that is inaccurate... it's really "above lower bound" and "below lower bound").
In comparison, this is a great limitation; because all seven of those cardinal values, and all the shadings in between, exist "in the world". In order to interact with the world (and to produce accurate and relevant solution sets to realworld problems) computers need to be able to approximate those values in their logic.
This is of course possible (or computers would be useless as anything other than calculators), through programming; but it takes up computational cycles.
We can approximate indiscrete logic in a discrete logic machine, using huge numbers of discrete logic tests in decision trees; but it's like a chimpanzee playing 20 questions with god.
Each decision tree gets so complex, as to require many orders of magnitude more calculations than the human brain does to produce a solution set.
Just using those 7 discrete values, ignoring the indiscrete shadings, and relational logic humans can do; to approximate a single DEDUCTIVE ONLY human logic test, can require hundreds of binary logic tests.
Simply because we are capable of dealing with indeterminacy.
If a question is suitably complex, but is subject to relational or inductive solving (as so many human questions are); we can do in a single logic test, what a binary computer could require tens of billions, or even hundreds of billions of logic tests to do.
Simply put (yeah, I know, WAAAAY too late for that), human beings have intuition, and experience; and that lets us deal with extremely complicated problems, very quickly.
Computers can't really do that. Oh sure, they can address extremely complicated problems; but they do it by breaking them down into EXTREMELY simple ones. Yes and no, on or off... To solve any problem whatsoever, the computer has to play a giant version of 20 questions.
Of course they do most of this in hardware, at a very low level; or in firmware, or assembler above that; all far below the level of operating systems, and applications... and they do it INCREDIBLY quickly now.
Thankfully, computers have massive, and nearly perfect (sadly, only nearly), memory. In fact, it was the addition of stateful memory, that allowed calculators, to become computers.
Combined with this incredible speed at these simple logical tests; this allows computers to do a half decent job at solving a lot of problems..
But they still can't really deal with indeterminacy, chaos, randomness... If a computer needs to deal with anything nondeterministic, it must approximate it to a discrete value, and operate on that discrete value.
Even if we manage to develop 7 value logic discrete circuits, we still don't know how to approximate relational reasoning, or induction, only deduction; because we can't approximate nondeterministic logic tests, and relation and induction are inherently nondeterministic.
Of course, computers now HAVE the capacity for hundreds of billions of logic tests a second... so even if they can't actually use inductive or relational reasoning; they now have the capacity, at least for relatively simple questions, or for those questions for which discrete datasets and rulesets exist and can be solved for (like math problems); to adequately approximate, and simulate, human reasoning, using discrete deduction in (astronomically large and complex) binary logic decision trees...
If you can ask enough yes or no questions, fast enough, you can actually seem like you're thinking... but you'll never have an original though, or intuit something, or make a connection between two things that isn't derivable from a deterministic and discrete logic chain connecting the two.
Maybe we never will have a way to do so. We certainly have no clue as to how we would even start trying.
I just wonder which will come first: Developing a high value logic circuit, figuring out something like quantum computing at its true potential (meaning infinite indescrete values, and maybe, possibly, nondeterministic logic... but we have no idea how to do that, or if it's even possible) and how to program for it (which may be an even harder problem)... or simply building a binary computer so large and so fast, that we no longer care about the rest of it.
Anyway... I bet it'll play really cool video games.