Download as pdf or txt
Download as pdf or txt
You are on page 1of 14

11/30/2015

Algorithms:DynamicProgrammingMatrixChainMultiplicationwithCProgramSourceCodethelearningpoint

the
learning
point
Home

Math

CBSE/ICSE/IIT

Physics
About

Search this site

Chemistry

Computer Science

EE

English

Recent Site Activity

Computer Science
>

Algorithms: Dynamic
Programming - Matrix Chain
Multiplication with C Program
Source Code

Follow The Learning Point Community on Facebook!

Basic Data Structures and


Algorithms

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

Bubble Sort -One of the most


elementary sorting algorithms to
implement - and also very
inefficient. Runs in quadratic
time. A good starting point to
understand sorting in general,
before moving on to more
advanced techniques and
algorithms. A general idea of
how the algorithm works and a
the code for a C program.

Insertion Sort -Another


quadratic time sorting algorithm
- an example of dynamic
Matrix
programming. An explanation
and step through of how the
Chain
algorithm works, as well as the
Multiplication
source code for a C program
which performs insertion sort.

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

CBSE 2015 K12 Toppers


CBSE 2015 Percentage to
Percentile
ISC 2015 K12 Toppers
ISC 2015 K12 School-wise
Results
CBSE 2014 K12 School-wise
Results
CBSE 2014 Percentage to
Percentile
ISC 2014 Percentage to
Percentile
ICSE/ISC-2014 Schools-wise
Results
Popular articles
Exposing CBSE/ICSE Marking
Scams(2013)
Exposing CBSE/ICSE: A follow-up
(2015)
CBSE Score manipulation over a
decade
Mathematics
Quizzes on Progressions
MCQ #1: Arithmetic Progression

http://www.thelearningpoint.net/computerscience/algorithmsdynamicprogrammingmatrixchainmultiplication

2/14

11/30/2015

Algorithms:DynamicProgrammingMatrixChainMultiplicationwithCProgramSourceCodethelearningpoint

combining algorithm works, as well as the


source code for a C program
the
which performs selection sort.
solutions
to
Shell Sort - An inefficient but
subproblemsinteresting algorithm, the
complexity of which is not
just like
thedivide exactly known.
and
Merge Sort An example of a
conquer
Divide and Conquer algorithm.
method.Dynamic
Works in O(n log n) time. The
programming
memory complexity for this is a
method is bit of a disadvantage.
used to
Quick Sort In the average case,
solve the
this works in O(n log n) time. No
problem
additional memory overhead of
so this is better than merge sort
in this regard. A partition
multiplication
of a chain element is selected, the array is
ofmatrices restructured such that all
elements greater or less than
so that
the partition are on opposite
the fewest sides of the partition. These two
total
parts of the array are then
scalar
sorted recursively.
multiplications
Heap Sort - Efficient sorting
are
algorithm which runs in O(n log
performed.
Given a
chain (A1,
A2, A3,
A4.An)
of n
matrices,
we wish
to
compute

n) time. Uses the Heap data


structure.

Binary Search AlgorithmCommonly used algorithm used


to find the position of an
element in a sorted array. Runs
in O(log n) time.

Basic Data Structures and


Algorithms

MCQ #2: Geometric Progression


MCQ #3 : More on Geometric
Progressions.
MCQ #4 : Harmonic
Progressions.
MCQ #5: More on Harmonic
Progression
MCQ #6: Mixed Progressions
Coordinate Geometry - Straight
Lines
MCQ #1: Cartesian Planes,
Straight Line Basics
MCQ #2 on Straight Lines
MCQ #3 on Straight Lines
MCQ #4 on Straight Lines
Circles
1 MCQ #1 on Circles.
2 MCQ #2 on Circles.
3 MCQ #3 on Circles.
Conic Sections- Parabola,
Hyperbola, Ellipse
1 MCQ- The Basics of Conic
Sections
2 MCQ on Parabola..
3 MCQ on Hyperbola
4 MCQ on Ellipses.

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

Stacks Last In First Out data


the
product. A structures ( LIFO ). Like a stack of
cards from which you pick up the
product
one on the top ( which is the last
ofmatrices
one to be placed on top of the
is fully
stack ). Documentation of the
parenthesized
various operations and the
if it is
stages a stack passes through
when elements are inserted or
either a
deleted. C program to help you
single
get an idea of how a stack is
matrix or
implemented in code.
the
product of Queues First in First Out data
structure (FIFO). Like people
fully
waiting to buy tickets in a queue
parenthesizedmatrix
products, - the first one to stand in the
queue, gets the ticket first and
surrounded
gets to leave the queue first.
by
Documentation of the various
parenthesis. operations and the stages a
Since,
queue passes through as
matrix
elements are inserted or deleted.
C Program source code to help
multiplication
you get an idea of how a queue
is
is implemented in code.
associative
allparenthesizations
Single Linked List A self
yield the
referential data structure. A list
of elements, with a head and a
same
tail; each element points to
product.
another of its own kind.
But, the
way we
Double Linked List - A self
parenthesizereferential data structure. A list
a chain of of elements, with a head and a
tail; each element points to
matrices
another of its own kind in front
havean
of it, as well as another of its
impact on
own kind, which happens to be
the cost
behind it in the sequence.
of

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

evaluating Circular Linked List Linked list


with no head and tail - elements
the
point to each other in a circular
product.
fashion.
We divide
a chain of Binary Search Trees A basic
matrices
form of tree data structures.
to be
Inserting and deleting
multipliedinto
elements in them. Different
kind of binary tree traversal
two
algorithms.
optimal
sub Heaps -A tree like data
chains,
structure where every element
and then
is lesser (or greater) than the
the
one above it. Heap formation,
optimal
sorting using heaps in O(n log
parenthesizations
n) time.
of the
Height Balanced
subTrees -Ensuring that trees
chains
remain balanced to optimize
must
becomposedcomplexity of operations which
of optimal are performed on them.
chains.

Algorithm
- this has
been
covered in
the
tutorial
document: Graphs
A block of
memory
cache is

Depth First Search -Traversing


through a graph using Depth
First Search in which unvisited

Quizzes on Data Structures,


Algorithms and Complexity
1 MCQ #1: The Basics of Sorting
Algorithms- Quadratic Sorts
2 MCQ #2: Efficient Sorting
Algorithms- Quick sort, Merge
Sort, Heap Sort
3 MCQ #3- The Radix Sort
4 MCQ #4: Divide and Conquer
5 MCQ #5- Dynamic
Programming
6 MCQ #6- Complexity of
Algorithms
7 MCQ #7- Application of
Master's Theorem
8 MCQ #8: Binary Search Trees
9 MCQ #9: B-Trees
10 MCQ #9: AVL-Trees
11 MCQ #10: Representing
Graphs as Data Structures
12 MCQ #11: Spanning Trees
13 MCQ #12: Algorithms Graphs: Spanning Trees Kruskal and Prim Algorithms
14 MCQ #13: Algorithms Graphs: Depth and Breadth First
Search
Basic English Grammar
English Online: Articles (Quiz #1)
English Online: Articles (Quiz #2)
English Online: Articles (Quiz #3)
English Grammar- The Tenses:
Quiz #1
English Grammar- The Tenses:
Quiz #2
English Grammar- The Tenses:
Quiz #3
English Grammar- The Tenses:

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

neighbors of the current vertex


are pushed into a stack and
visited in that order.
Breadth First Search Traversing through a graph using
Breadth First Search in which
unvisited neighbors of the
current vertex are pushed into a
queue and then visited in that
order.
Minimum Spanning Trees:
Kruskal Algorithm - Finding the
Minimum Spanning Tree using
the Kruskal Algorithm which is a
greedy technique. Introducing
the concept of Union Find.

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)

Minumum Spanning Trees: Prim's


Algorithm - Finding the Minimum

Spanning Tree using the Prim's


Algorithm.
Dijkstra Algorithm for Shortest
Paths - Popular algorithm for
finding shortest paths : Dijkstra
Algorithm.
Floyd Warshall Algorithm for
Shortest Paths - All the all

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
:

shortest path algorithm: Floyd


Warshall Algorithm
Bellman Ford Algorithm Another common shortest path
algorithm : Bellman Ford
Algorithm.

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.

Elementary cases : Fractional


Knapsack Problem, Task
Scheduling -Elementary
http://www.thelearningpoint.net/computerscience/algorithmsdynamicprogrammingmatrixchainmultiplication

7/14

11/30/2015

Algorithms:DynamicProgrammingMatrixChainMultiplicationwithCProgramSourceCodethelearningpoint

problems in Greedy algorithms Page1of3


Fractional Knapsack, Task
Scheduling. Along with C
Program
source code.
MatrixChainMultiplication
DynamicProgrammingsolvesproblemsbycombiningthesolutionstosubproblemsjustlikethe

Data Compression using

divideandconquermethod.

Huffman Trees Compression

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]
}

int iter,result = INT_MAX


/*We put the paranthesis at every possible step and we take the one for which comp
is minimum */
for(iter=fromiter<toiter++)
{
/* Update the result every time */
result= min(result,multiply(from,iter)
}
return result
}

/* 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

Multiplication chain of matrices


of various sizes,
how do you
parenthesize
them for the
purpose of
http://www.thelearningpoint.net/computerscience/algorithmsdynamicprogrammingmatrixchainmultiplication

10/14

11/30/2015

Algorithms:DynamicProgrammingMatrixChainMultiplicationwithCProgramSourceCodethelearningpoint

multiplication how do you chose


which ones to
start multiplying
first?
Longest
Given two
Common
strings, find the
Subsequence longest
commonsub
sequencebetween
them.

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

Matrix Chain Longest


Multiplication Common
Subsequence

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

Recent Site Activity

Report Abuse

Print Page

http://www.thelearningpoint.net/computerscience/algorithmsdynamicprogrammingmatrixchainmultiplication

| Powered By

Google Sites

14/14

You might also like