Algorithms - Dynamic Programming - Matrix Chain Multiplication With C Program Source Code - The Learning Point
Algorithms - Dynamic Programming - Matrix Chain Multiplication With C Program Source Code - The Learning Point
Algorithms:DynamicProgrammingMatrixChainMultiplicationwithCProgramSourceCodethelearningpoint
the
learning
point
Home
Math
CBSE/ICSE/IIT
Physics
About
Chemistry
Computer Science
EE
English
Computer Science
>
Algorithms: Dynamic
Programming - Matrix Chain
Multiplication with C Program
Source Code
Check
out
some
http://www.thelearningpoint.net/computerscience/algorithmsdynamicprogrammingmatrixchainmultiplication
1/14
11/30/2015
Algorithms:DynamicProgrammingMatrixChainMultiplicationwithCProgramSourceCodethelearningpoint
great
books
for
Computer
Science,
Programming
and
Tech
Interviews!
Sorting- at a glance
Queries?Contact:
updates {AT}
thelearningpoint.net
ICSE/ISC/CBSEResults
CBSE 2015 K12 School-wise
Results
To go
through
the C
program /
sourcecode,
scroll
down to
the end of
this page
Dynamic
Selection Sort - Another
Programming
quadratic time sorting algorithm
solves
- an example of a greedy
problems algorithm. An explanation and
step through of how the
by
http://www.thelearningpoint.net/computerscience/algorithmsdynamicprogrammingmatrixchainmultiplication
2/14
11/30/2015
Algorithms:DynamicProgrammingMatrixChainMultiplicationwithCProgramSourceCodethelearningpoint
Probability
MCQ #1 on Basic Probability
MCQ #2: More Challenging
Problems on Probability
MCQ #3- Conditional Probability
and Bayes Theorem
Complex Numbers
MCQ #1
MCQ #2: More on Complex
Numbers
http://www.thelearningpoint.net/computerscience/algorithmsdynamicprogrammingmatrixchainmultiplication
3/14
11/30/2015
Algorithms:DynamicProgrammingMatrixChainMultiplicationwithCProgramSourceCodethelearningpoint
Quadratic Equations
MCQ Quadratic Equations
Quadratic In-equations
MCQ Quadratic In-equations
Computer Science
Quizzes on Basic Object Oriented
Programming with C++
1 MCQ #1: C++ and OOPS
2 MCQ #2: Inheritance in C++
Quizzes on C ProgrammingArrays, Strings and Pointers
1 C Programming MCQ #1:
Strings- 1
2 C Programming MCQ #2:
Strings (2)
3 C Programming MCQ #3:
Strings (3)
4 C Programming MCQ #4:
Arrays(1)
5 C Programming MCQ #5:
Arrays (2)
6 C Programming MCQ #6:
Arrays (3)
7 C Programming MCQ #7:
Pointers (1)
8 C Programming MCQ #8:
Pointers (2)
Quizzes on Java Programming
1 Java MCQ #1- Classes,
Inheritances and Interfaces
2 Java MCQ #2- Collections
3 Java MCQ #3- Threading
http://www.thelearningpoint.net/computerscience/algorithmsdynamicprogrammingmatrixchainmultiplication
4/14
11/30/2015
Algorithms:DynamicProgrammingMatrixChainMultiplicationwithCProgramSourceCodethelearningpoint
Algorithm
- this has
been
covered in
the
tutorial
document: Graphs
A block of
memory
cache is
http://www.thelearningpoint.net/computerscience/algorithmsdynamicprogrammingmatrixchainmultiplication
5/14
11/30/2015
Algorithms:DynamicProgrammingMatrixChainMultiplicationwithCProgramSourceCodethelearningpoint
used to
store the
result of
the
function
for
specific
values. If
cache[i][j]
= -1 then
we do not
know the
result. If it
is some
number
then that
denotes
the return
value
ofmultiply
(i,j). We
store it to
avoid
computing
the same
again.
Input
Format:
First
integer
must be
the
number of
matrices.
It has to
Quiz #4
English Grammar- The Tenses:
Quiz #5
English Grammar: The Parts of
Speech (Quiz #1)
English Grammar: The Parts of
Speech (Quiz #2)
English Grammar: The Parts of
Speech (Quiz #3)
English Grammar: The Parts of
Speech (Quiz #4)
English Grammar: The Parts of
Speech (Quiz #5)
English Grammar: The Parts of
Speech (Quiz #6)
English Grammar: The Parts of
Speech (Quiz #7)
English Grammar: The Parts of
Speech (Quiz #8)
English Grammar: The Parts of
Speech (Quiz #9)
English Grammar: The Parts of
Speech (Quiz #10)
http://www.thelearningpoint.net/computerscience/algorithmsdynamicprogrammingmatrixchainmultiplication
6/14
11/30/2015
Algorithms:DynamicProgrammingMatrixChainMultiplicationwithCProgramSourceCodethelearningpoint
be
followed
by rows of
firstmatrix,
columns
of first
matrix,
columns
for second
matrix,
columns
for third
matrix
and so on.
Complete
Tutorial
with
Examples
:
Dynamic Programming A
technique used to solve
optimization problems, based
on identifying and solving subparts of a problem first.
Integer Knapsack problem An
elementary problem, often
used to introduce the concept
of dynamic programming.
Matrix Chain
Multiplication Given a long
chain of matrices of various
sizes, how do you parenthesize
them for the purpose of
multiplication - how do you
chose which ones to start
multiplying first?
Longest Common
Subsequence Given two
strings, find the longest
common sub sequence
between them.
7/14
11/30/2015
Algorithms:DynamicProgrammingMatrixChainMultiplicationwithCProgramSourceCodethelearningpoint
divideandconquermethod.
Dynamicprogrammingmethodisusedtosolvetheproblemofmultiplicationofachainof
using Huffman
Trees. A greedy
matricessothatthefewesttotalscalarmultiplicationsareperformed.
technique for encoding
Givenachain(A1,A2,A3,A4....An)ofnmatrices,wewishtocomputetheproduct.Aproductof
matricesisfullyparenthesizedifitiseitherasinglematrixortheproductoffullyparenthesized
information.
matrixproducts,surroundedbyparenthesis.Since,matrixmultiplicationisassociativeall
parenthesizationsyieldthesameproduct.But,thewayweparenthesizeachainofmatriceshave
animpactonthecostofevaluatingtheproduct.Wedivideachainofmatricestobemultiplied
intotwooptimalsubchains,andthentheoptimalparenthesizationsofthesubchainsmustbe
composedofoptimalchains.
Algorithm:
Ablockofmemorycacheisusedtostoretheresultofthefunctionforspecificvalues.Ifcache[i]
[j]=1thenwedonotknowtheresult.Ifitissomenumberthenthatdenotesthereturnvalueof
multiply(i,j).Westoreittoavoidcomputingthesameagain.
InputFormat:Firstintegermustbethenumberofmatrices.Ithastobefollowedbyrowsoffirst
matrix,columnsoffirstmatrix,columnsforsecondmatrix,columnsforthirdmatrixandsoon.
d[i]isusedtostorethedimensionofthematrixi
lossofgeneralitywewillputd[0]tobenumberofrowsofthefirstmatrixandwestarttheindex
from1.
Firstly,initializecacheto1.Thentakethenumberofmatricesandthematrixvaluesfromthe
user.Lastly,multiplyusingthemultiplyfunction.
Matrix
Chain
Multiplication
CProgram
SourceCode
#include<string.h>
http://www.thelearningpoint.net/computerscience/algorithmsdynamicprogrammingmatrixchainmultiplication
8/14
11/30/2015
Algorithms:DynamicProgrammingMatrixChainMultiplicationwithCProgramSourceCodethelearningpoint
#include<stdio.h>
#include<limits.h>
int min(int a,int b)
{
return a < b ? a:b
}
/*d[i] is used to store the dimension of the matrix ith matrix has dimension d[i-1] * d[i].
So for no loss of generality we will put d[0] to be number of rows of the first matrix and
start the index from 1
*/
int d[100100]
/* Cache is used to store the result of the function for specific values. If cache[i][j] = -1
do not know the result. If it is some number then that denotes the return value of multi
We store it to avoid computing the same again
*/
int cache[1024][1024]
int multiply(int from,int to)
{
if(from==to)return 0
if(cache[from][to]!=-1)
{
return cache[from][to]
}
/* Input Format: First integer must be the number of matrices. It has to be followed by
rows of first matrix, columns of first matrix, columns for second matrix, columns for th
*/
http://www.thelearningpoint.net/computerscience/algorithmsdynamicprogrammingmatrixchainmultiplication
9/14
11/30/2015
Algorithms:DynamicProgrammingMatrixChainMultiplicationwithCProgramSourceCodethelearningpoint
int main()
{
/*Initialising cache to -1 */
memset(cache, -1,sizeof(cache))
int number_of_matrices
scanf("%d",&number_of_matrices)
scanf("%d",&d[0])
int iter
for(iter=1iter<=number_of_matricesiter
{
scanf("%d",&d[iter])
}
printf("%d\n",multiply(1,number_of_matrices
}
Related
Tutorials
(common
examples
of
Dynamic
Programming):
Integer
Knapsack
An elementary
problem, often
problem
used to introduce
the concept of
dynamic
programming.
Matrix Chain
Given a long
10/14
11/30/2015
Algorithms:DynamicProgrammingMatrixChainMultiplicationwithCProgramSourceCodethelearningpoint
Some
Important
Data
Structures
and
Algorithms,
at a
glance:
Arrays :
Popular
Sorting
and
Searching
Algorithms
Bubble
Sort
Selection Shell
Insertion
Sort
Sort
Sort
Merge
Quick
Heap
Binary
http://www.thelearningpoint.net/computerscience/algorithmsdynamicprogrammingmatrixchainmultiplication
11/14
11/30/2015
Algorithms:DynamicProgrammingMatrixChainMultiplicationwithCProgramSourceCodethelearningpoint
Sort
Sort
Basic Data
Structures
and
Operations
on them
Stacks
Sort
Search
Algorithm
Queues Single
Linked
List
Circular
Linked
List
1.
Tree Data
Structures
Double
Linked
List
Binary
Heaps
Search Trees
Height
Balanced
Trees
Graphs and
Graph
Algorithms
Depth First
Search
Breadth
Minimum
First Search Spanning
Trees: Kruskal
Algorithm
Dijkstra
Algorithm for
Shortest
Paths
Floyd
Warshall
Algorithm
for Shortest
Paths
Bellman Ford
Algorithm
Popular
Minumum
Spanning
Trees: Prim's
Algorithm
http://www.thelearningpoint.net/computerscience/algorithmsdynamicprogrammingmatrixchainmultiplication
12/14
11/30/2015
Algorithms:DynamicProgrammingMatrixChainMultiplicationwithCProgramSourceCodethelearningpoint
Algorithms in
Dynamic
Programming
Dynamic
Integer
Programming Knapsack
problem
Greedy
Algorithms
Elementary
cases :
Fractional
Knapsack
Problem,
Task
Scheduling
Data
Compression
using
Huffman
Trees
http://www.thelearningpoint.net/computerscience/algorithmsdynamicprogrammingmatrixchainmultiplication
13/14
11/30/2015
Algorithms:DynamicProgrammingMatrixChainMultiplicationwithCProgramSourceCodethelearningpoint
0
Comments
Newest
Sign in
Report Abuse
Print Page
http://www.thelearningpoint.net/computerscience/algorithmsdynamicprogrammingmatrixchainmultiplication
| Powered By
Google Sites
14/14