Discussion about math, puzzles, games and fun.   Useful symbols: ÷ × ½ √ ∞ ≠ ≤ ≥ ≈ ⇒ ± ∈ Δ θ ∴ ∑ ∫ • π ƒ -¹ ² ³ °

You are not logged in.

## #1 2006-02-01 06:43:27

mikau
Super Member

Offline

### what is discrete math?

hope I spelled that right. Heard you take it in 3d game programming.

Also boolean algebra. Whats that about? In C++, type "bool" is a variable that only returns true or false. It does not hold a value.

A logarithm is just a misspelled algorithm.

## #2 2006-02-01 09:26:18

Ricky
Moderator

Offline

### Re: what is discrete math?

Discrete math is a compilation of different types of math.  My discrete math started off with something like boolean algebra.

Boolean algebra allows you to reduce statements into simpler ones.  For example:

Let a, b, and c be boolean.

(a and b) or (a and c) = a or (b and c), i.e. these two statements have the same truth values for any a, b, or c.  If (a and b) or (a and c) is false, so is a or (b and c).

It also has rules for negations:

not (a and b) = (not a) or (not b)

In programming, it makes writing if statements much more clear.

Discrete math, for me, went from boolean algebra, to proofs (forward, contrapositive, contradiction, and induction), to sets, operations, and functions.

The only application for discrete math in programming is function analysis, i.e. seeing how long a piece of code would take to run.

"In the real world, this would be a problem.  But in mathematics, we can just define a place where this problem doesn't exist.  So we'll go ahead and do that now..."

## #3 2006-02-01 17:32:16

mikau
Super Member

Offline

### Re: what is discrete math?

Interesting. Thanks for the description.

A logarithm is just a misspelled algorithm.

## #4 2006-02-01 19:25:25

MathsIsFun

Offline

### Re: what is discrete math?

#### mikau wrote:

It does not hold a value.

Ah, but it does! It holds a binary value, the basis of life as we know it.

"The physicists defer only to mathematicians, and the mathematicians defer only to God ..."  - Leon M. Lederman

## #5 2006-02-02 08:37:16

Ricky
Moderator

Offline

### Re: what is discrete math?

In C++, type "bool" is a variable that only returns true or false. It does not hold a value.

Little known fact, most compilers have a bool as 8 bits, even though only one is needed.

"In the real world, this would be a problem.  But in mathematics, we can just define a place where this problem doesn't exist.  So we'll go ahead and do that now..."

## #6 2006-02-02 08:58:17

mikau
Super Member

Offline

### Re: what is discrete math?

Yeah I meant it doesn't store a numerical value for the user.

Why the heck is it 8 bits on some compilers? I thought the purpose was to save memory for switch variables. Peculiar...

A logarithm is just a misspelled algorithm.

## #7 2006-02-02 09:31:13

ryos
Power Member

Offline

### Re: what is discrete math?

Does boolean algebra have a distributive property?

For example, I often wish I could say: a == (b or c or d)
instead of: (a == b) or (a == c) or (a == d)
...but the first form doesn't work.

El que pega primero pega dos veces.

## #8 2006-02-02 09:34:37

mikau
Super Member

Offline

### Re: what is discrete math?

like in C++?

Last edited by mikau (2006-02-02 09:34:52)

A logarithm is just a misspelled algorithm.

## #9 2006-02-02 09:43:01

ryos
Power Member

Offline

### Re: what is discrete math?

Well, PHP. I've never written a line of C++, and hope I never have to.

El que pega primero pega dos veces.

## #10 2006-02-02 09:46:21

mikau
Super Member

Offline

### Re: what is discrete math?

Its not that hard to use once you know it. But it can very hard to learn sometimes.

A logarithm is just a misspelled algorithm.

## #11 2006-02-02 09:56:08

Ricky
Moderator

Offline

### Re: what is discrete math?

Does boolean algebra have a distributive property?

For example, I often wish I could say: a == (b or c or d)
instead of: (a == b) or (a == c) or (a == d)
...but the first form doesn't work.

Not quite.  There is no equality in boolean algebra.  Instead, each variable is either true or false.

a and (b or c or d)

the equivalent would be:

(a and b) or (a and c) or (a and d)

"In the real world, this would be a problem.  But in mathematics, we can just define a place where this problem doesn't exist.  So we'll go ahead and do that now..."

## #12 2006-02-02 09:59:13

Ricky
Moderator

Offline

### Re: what is discrete math?

Why the heck is it 8 bits on some compilers? I thought the purpose was to save memory for switch variables. Peculiar...

This is a bit of a complex question (pun intended).  Computers run much faster if all data is stored in whole bytes.  To understand why, you need to understand the underlying architecture, which would take me a while to describe.

"In the real world, this would be a problem.  But in mathematics, we can just define a place where this problem doesn't exist.  So we'll go ahead and do that now..."

## #13 2006-02-02 10:00:45

ryos
Power Member

Offline

### Re: what is discrete math?

Heh, I think exactly opposite. My first programming language was C at age 13. My first OOP language was Java at age 18. Both were very easy to learn, but using Java is much easier. This is mainly due to Java's memory handling and extensive API. And after using a language that abstracts strings, I just can't bring myself to use a language that doesn't (of course, I'm sure people have abstracted strings tons of times in C++, but I doubt it's as slick as native support).

I'm starting to learn Ruby, which is supposedly nice enough to make PHP blush with shame.

El que pega primero pega dos veces.

## #14 2006-02-02 10:13:23

mikau
Super Member

Offline

### Re: what is discrete math?

Well in the case of C++, there are I believe three logical operators,  And "&&" Or, "||" and Not "!"

Really an if statement returns true if the statement is true, and false if the statement is false, but you can use simple values instead of relational opererators such as ==, >, <, etc. A variable with a value of  zero evaluates false. All others evaluate true.

If for instance you were to say:

if(5) { statement; }

it will evaluate true and always will since 5 does not equal zero, and the statement will be excecuted.

if(0) { statement; }

this will not be executed. Zero returns false.

When you use the logical operators,  you can use the "or" and "and" operaters to execute a statement if either, or only if both are true.

you could say

if(0 || 1) { statement; }

that would return true. ( "||" means or)

if (0 && 1) { statement; }

that would not return true since both must be true.

But when you say if ( x == (5 || 7)) { statement;}

I believe this is incorrect use of the or operator. The or operator is used between two expressions that are evaluated for their truth or falsity. Not their value.

A logarithm is just a misspelled algorithm.

## #15 2006-02-03 05:08:46

ryos
Power Member

Offline

### Re: what is discrete math?

OK. Too right. I still wish their were a language construct for compacting conditions wherein a variable could equal one of several things that trigger the condition.

El que pega primero pega dos veces.

## #16 2006-02-03 05:22:04

mikau
Super Member

Offline

### Re: what is discrete math?

maybe there is. Many computer languages hold secret techniques only known by the ninja's.

A logarithm is just a misspelled algorithm.

## #17 2006-02-03 07:29:17

MathsIsFun

Offline

### Re: what is discrete math?

#### ryos wrote:

OK. Too right. I still wish their were a language construct for compacting conditions wherein a variable could equal one of several things that trigger the condition.

Isn't that the "select" statement (aso called "case" or "switch") ?

Example (Visual Basic code to replace any non-alphanumeric with "_"):

#### Code:

```    Select Case c
Case "a" To "z", "A" To "Z", "0" To "9"
Mid\$(x, i, 1) = c

Case Else
Mid\$(x, i, 1) = "_"

End Select```

I chose VB because it has such a rich case statement, PHP can only have one value per "case":

#### Code:

```    switch (\$MatchType) {
case "=":
\$s .= \$MatchVar . "=" . \$MatchVal;
break;

case "Like":
\$s .= \$MatchVar . ' like "%' . \$MatchVal . '%"';
break;

default:
\$s .= \$MatchVar . \$MatchVal; break;

}```

But PHP, like C, will continue to run statements below it without the "break;", so this can be used to put several "case" statments in sequence:

#### Code:

```    switch (\$MatchType) {
case "=":
case "equal":
case "same":
\$s .= \$MatchVar . "=" . \$MatchVal;
break;

case "Like":
\$s .= \$MatchVar . ' like "%' . \$MatchVal . '%"';
break;

default:
\$s .= \$MatchVar . \$MatchVal; break;

}```

But there is a trick in PHP: use switch (TRUE) and then the "case"s can be conditions like "(\$x >5)" or "in_array()" etc.

Sorry, didn't mean to ramble on.

"The physicists defer only to mathematicians, and the mathematicians defer only to God ..."  - Leon M. Lederman

## #18 2006-02-03 10:26:30

ryos
Power Member

Offline

### Re: what is discrete math?

Hmm...case true eh? Pretty slick. I had thought of the rollover switch, but it seems like using a sledgehammer to open a can. Almost easier to just use a knife. But what I really need is a can opener...

El que pega primero pega dos veces.

## #19 2006-02-03 19:13:02

MathsIsFun

Offline

### Re: what is discrete math?

#### Code:

```canopener (\$problem) {
\$result = solved;
}```

"The physicists defer only to mathematicians, and the mathematicians defer only to God ..."  - Leon M. Lederman

## #20 2006-02-04 08:03:26

ryos
Power Member

Offline

### Re: what is discrete math?

#### Code:

```<?php
function canOpener (\$can)  {
\$canOpened = false;
\$args = func_get_args();
unset (\$args[0]);  //that's \$can; we have that one

foreach (\$args as \$compareTo)  {
if (\$can == \$compareTo)  { \$canOpened = true; }
}

return \$canOpened;
}
?>```

:p

El que pega primero pega dos veces.

## #21 2006-02-05 02:24:29

John E. Franklin
Star Member

Offline

### Re: what is discrete math?

Also on the topic of discrete math for electronics is Karnaugh mapping created in 1950's.
And Logic Circuit Minimization.

Imagine for a moment that even an earthworm may possess a love of self and a love of others.