## bbkzr31 2 years ago Need help with a discrete math problem.

1. bbkzr31

2. zimmah

I'm not familiar with these type of problems, seems like you need to use the bottom formul a for both, but I don't know how to fill it in.

3. bbkzr31

So if I started filling in the bottom formula for A(3, 3) A(3-1, A(3,3-1)) A(2, A(3,2)) Plug the A(3,2) back into the formula: A(2, A(3-1, A(3, 2-1))) A(2, A(2, A(3, 1))) Now n = 1 so I can use the third formula to get A(3, 1) = 2 A(2, A(2, 2)) A(2, A(2-1, A(2, 2-1))) A(2, A(1, A(2, 1))) Use the third formula again: A(2, A(1, 2)) A(2, A(1-1,A(1, 2-1))) A(2, A(0, A(1, 1))) A(2, A(0, 2)) Use the first formula: A(2, 2n) A(2, 2(2) A(2, 4) A(1, A(2, 3)) A(1, A(1, A(2, 2))) A(1, A(1, A(1,A(2, 1)))) A(1, A(1, A(1, 2))) A(1, A(1, A(0, A(1, 1)))) A(1, A(1, A(0, 2))) A(1, A(1, 2(2))) A(1, A(1, 4)) A(1, A(0, A(1, 3))) A(1, A(0, A(0, A(1, 2)))) A(1, A(0, A(0, A(0, A(1, 1))))) A(1, A(0, A(0, A(0, 2)))) A(1, A(0, A(0, 4))) A(1, A(0, 8)) A(1, 16) A(0, A(1, 15)) A(0, A(0, A(1, 14)) lol, this is going to take a while.

4. bbkzr31

Anyone know if this is how you do it, or is there a faster way?

5. amscasey

Sorry, this is WAY above my level of math :/ wish i could be more help

6. bbkzr31

@amistre64 Do you know if I am doing this right?

7. amistre64

it looks like a recurrsion alright

8. bbkzr31

Yeah, that is what it is.

9. amistre64

A( m-1, A(m,n-1) ) ; 3,3 A(m,n) = A( 3-1, A(3,3-1) ) A(3,3) =A( 2, A(3,2) ) A(3,2) = A( 2, A(3,1) ) A(3,1) = 2 A(3,2) = A( 2, 2) = A( 1, A(2,1) ) A(3,2) = A( 0, 2 ) = 4 A(3,3) =A( 2, 4 ) etc ....

10. amistre64

multivariables seem to be a pain to do by hand, might help to program a simple loop for it

11. bbkzr31

Well I have to show my work for the homework so I'll probably have to write it out. I guess it is basically just a lot of plugging in the numbers over and over again.

12. bbkzr31

Makes sense though, the way this one is going, I bet the A(3,4) will be really long, haha.

13. amistre64

if you can determine a pattern :) but ive never really tried for a multivariable

14. zimmah

Oh that makes sense. It's like programming an if-then-else loop

15. amistre64

yep

16. bbkzr31

Well I guess I could do a simple program that outputs each step and then just copy the results to the paper.

17. zimmah

Having never seen anything like this I was like put what in what now? Lol

18. zimmah

Ye, that would be faster I guess

19. bbkzr31

Alrighty thanks for the help guys! I'm gonna hit up some python :D

20. bbkzr31

Well I started on the program. I think it will take a little more work to get it to print all the steps. def A(m, n): print "(", m, ", " , n, ")" if m == 0: return (2*n) elif m >= 1 and n == 0: return 0 elif m >= 1 and n == 1: return 2 elif m >= 1 and n >= 2: return (m - 1, A(m, n - 1)) m = input('m: ') n = input('n: ') answer = A(m,n)

21. bbkzr31

And, I don't think it is working quite right yet.

22. amistre64

yeah, i was trying to do it in excel ... its tricky at best

23. bbkzr31

oops, missed an A in the return

24. bbkzr31

Here is my output: ( 3 , 3 ) ( 3 , 2 ) ( 3 , 1 ) ( 2 , 2 ) ( 2 , 1 ) ( 1 , 2 ) ( 1 , 1 ) ( 0 , 2 ) ( 2 , 4 ) ( 2 , 3 ) ( 2 , 2 ) ( 2 , 1 ) ( 1 , 2 ) ( 1 , 1 ) ( 0 , 2 ) ( 1 , 4 ) ( 1 , 3 ) ( 1 , 2 ) ( 1 , 1 ) ( 0 , 2 ) ( 0 , 4 ) ( 0 , 8 ) ( 1 , 16 ) ( 1 , 15 ) ( 1 , 14 ) ( 1 , 13 ) ( 1 , 12 ) ( 1 , 11 ) ( 1 , 10 ) ( 1 , 9 ) ( 1 , 8 ) ( 1 , 7 ) ( 1 , 6 ) ( 1 , 5 ) ( 1 , 4 ) ( 1 , 3 ) ( 1 , 2 ) ( 1 , 1 ) ( 0 , 2 ) ( 0 , 4 ) ( 0 , 8 ) ( 0 , 16 ) ( 0 , 32 ) ( 0 , 64 ) ( 0 , 128 ) ( 0 , 256 ) ( 0 , 512 ) ( 0 , 1024 ) ( 0 , 2048 ) ( 0 , 4096 ) ( 0 , 8192 ) ( 0 , 16384 ) ( 0 , 32768 )

25. bbkzr31

lol

26. bbkzr31

I think one of the hardest parts will be getting it to output the results correctly

27. bbkzr31

Any luck with excel? I'm gonna switch to C++ to try to get the output working right.

28. bbkzr31

So here is what I came up with. Ended up using C. #include <stdio.h> #include <stdlib.h> int m; int n; int answer; void PrintA(m,n) { printf("A(%d, %d) = ", m, n); printf("A(%d, A(%d, %d)\n", m-1, m , n-1); } int A(int m, int n) { if(m == 0) return (2*n); else if(m >= 1 && n == 0) return 0; else if(m >= 1 && n == 1) return 2; else if(m >= 1 && n >= 2) PrintA(m,n); return A(m - 1, A(m, n - 1)); } int main() { printf("m: "); scanf("%d", &m); printf("n: "); scanf("%d", &n); answer = A(m, n); printf("Answer: %d\n", answer); return 0; }

29. bbkzr31

Here is what I get for the first one. A(3,3) Obviously the answer is wrong, but all the steps up to the answer should be correct. So I can calculate the answer myself from the last step, which is 4 I think.

30. bbkzr31

That works fine, now the problem is when I try A(3, 4) although I get the answer to be 0, it outputs for about 30 seconds, so I get like 1000s of lines of output which would be a bit too much to write. lol. Anyway, I'm thinking there must be some way to recognize a pattern in order to get the answer. :/

31. myininaya

So yeah I found a pattern for A(3,3) problem when I got to A(1,16) and got the computer output you got.

32. myininaya

which i will most likely leave as 2^16

33. bbkzr31

So the stops working?

34. myininaya

I seen 2^n*A(1,16-n)

35. myininaya

what do you mean stops working?

36. bbkzr31

So how would I use this pattern in finding a solution? mistyped, you said you found a problem earlier.

37. myininaya

pattern not a problem i was referring to your problem/question

38. bbkzr31

oh I get it now, lol.

39. myininaya

wow yeah it looks like A(3,4) might take longer to find.

40. bbkzr31

Ah right, so we would need a separate pattern for A(3,4) determined by some of the output?

41. myininaya

You said you got 0. That is what I got too.

42. myininaya

A(3,4) =A(2,A(3,3)) =A(2,2^16) =A(1,A(2,2^16-1)) ------------------ Let's look at A(2,2^16-1) A(2,2^16-1)=A(1,A(2,2^16-2)) There is like a pattern going on we have A(2,2^16-b) b keeps increasing eventually it will get to 2^16 Since this is happening in the n part of A then the output will be 0.

43. myininaya

Is this what you were looking for?

44. bbkzr31

Yes I think so, just trying to get my head around it. I think once I look at it for a bit I will understand.

45. bbkzr31

Thanks so much for all the help though! Really appreciate it.

46. myininaya

Like A(something bigger than 1,0)=0 eventually A(1,k) will be A(1,0)

47. myininaya

And A(1,0)=0

48. bbkzr31

so b will eventually get to 2^16?

49. myininaya

yep.

50. bbkzr31

and then it will be 0. I get it now, thank you so much :D

51. myininaya

Like because we keep subtracting 1 each time.

52. myininaya

I'm not doing all those steps. It is impossible to do all those steps. You have to look for a pattern.

53. myininaya

n=2^16 n-1=2^16-1 (n-1)-1=n-2=2^16-2 (n-2)-1=n-3=2^16-3 ....

54. myininaya

we keep subtracting 1 from the n before.

55. bbkzr31

right right, exactly, until n becomes 0, then according to the second formula A(3,4) == 0

56. bbkzr31

@myininaya Hi there, could you look over this one more time. According to my teacher, it is impossible to find the second number for A(3,4) by using a computer algorithm. And the students in my class are saying the answer is a really big number and not 0. Like a lot bigger then the number for A(3,3) Do you have any idea where that would be coming from?

57. myininaya

Well it looked like the pattern was going toward it being 0. I can look at it again. Did you explain your thinking to the teacher person? Like why did they say the thinking was wrong?

58. bbkzr31

The teacher hasn't looked at my work yet, he was just giving hints to help with the homework, and he said that this part cannot be done with a computer program because it will run out of memory and lose the answer.

59. bbkzr31

I don't really understand why that would happen, but I just want to make sure to get it right since other students are getting really large numbers.

60. myininaya

He didn't say a human couldn't do it though right?

61. bbkzr31

No, he said it was possible to do by hand, but not with an algorithm.

62. myininaya

Just because a computer doesn't have the space to use an algorithm to compute doesn't mean we don't have the space.

63. myininaya

So the answer is still 0

64. myininaya

n=2^16 n-1=2^16-1 (n-1)-1=n-2=2^16-2 (n-2)-1=n-3=2^16-3 remember when I wrote this?

65. myininaya

2^16 steps is a lot. I don't know if it is too long for a computer or not. But it will actually take longer than 2^16 steps to compute.

66. bbkzr31

Right, so there isn't some sort of pattern we could figure out to get the answer without the steps?

67. myininaya

I said it would take longer than 2^16 because we did some other crap before to get there and we still have to do more stuff after that, but the pattern seems to be leading to the answer being zero.

68. bbkzr31

Hmm, well I'll stick with that then. Perhaps my teacher is wrong. :D

69. myininaya

What? You said your teacher said it was possible for a human I thought.

70. myininaya

"No, he said it was possible to do by hand, but not with an algorithm."

71. bbkzr31

Yeah, but I got 0 with the program I wrote.

72. myininaya

So the answer you are saying is not zero?

73. bbkzr31

Which is just a simple recursive function.

74. bbkzr31

That is what I was led to believe by my fellow students and teacher.

75. myininaya

So the teacher said the answer isn't 0 and does exist.

76. bbkzr31

No, the teacher didn't say anything about the answer, just that it couldn't be done with a computer, and since I got the same number with I computer 0, as you got by hand, I figured it couldn't be right unless my teacher was wrong.

77. myininaya

Can you copy it here? What you put in as the algorithm into your computer? I will try to follow it.

78. myininaya

I just want to see if I agree with your algorithm.

79. myininaya

Is that it above? The final draft of your program?

80. myininaya

maybe you are accidentally getting 0. lol. i don't know.

81. myininaya

or

82. myininaya

like you did get the right answer with A(3,3)

83. myininaya

maybe we can check another one.

84. myininaya

Let's look at A(2,5) Use program and let's do it by hand.

85. myininaya

darn that is long. lol.

86. bbkzr31

haha, yeah. Runs for around 15 seconds.

87. bbkzr31

that is probably like a 100th of the output there. lol

88. myininaya

is the answer always 0 when n>m?

89. bbkzr31

No, for m = 1 and n = 2 I get A(1, 2) = A(0, A(1, 1) Answer: 4

90. bbkzr31

For 2 and 3

91. myininaya

A(1,2)=A(0,A(1,1)) =A(0,2) =2n =2n=2(2) since n=2. okay.did you computer also get 4 for A(1,2)?

92. bbkzr31

Yep

93. myininaya

hmmm... I get 16 by hand for A(2,3)

94. bbkzr31

Yeah, computer seems to be doing it right.

95. bbkzr31

Well I guess it is very possible that my teacher was wrong, idk.

96. myininaya

I don't know. There is a possibility I'm wrong. There is always a chance for that.

97. bbkzr31

Well there is a lot less possibility that you are wrong then I am wrong, so I guess I'll stick with that. :P

98. myininaya

I don't see anything wrong with your program. Maybe for most computers the algorithm will run too long. Not sure.

99. bbkzr31

Hard to tell, do you have time to look at one more thing really really quick?

100. myininaya

ok i will look no guarantees I will be able to help but i certainly will try

101. bbkzr31

http://openstudy.com/study#/updates/5276cbf2e4b0275c53855b4a Alright, thanks, wish I could give you another medal :/