algorithms_ dynamic programming - matrix chain multiplication with c program source code - the...

14
7/21/2019 Algorithms_ Dynamic Programming - Matrix Chain Multiplication With C Program Source Code - The Learning Point http://slidepdf.com/reader/full/algorithms-dynamic-programming-matrix-chain-multiplication-with-c-program 1/14 11/30/2015 Algorithms: Dynamic Programming - Matrix Chain Multiplication with C Program Source Code - the learning point http://www.thelearningpoint.net/com puter-science/algorithm s-dynam ic-program m ing---matrix-chain-m ultiplication the learning point Home Math Physics Chemistry C omputer Science EE English CBSE/ICSE/IIT About Recent Site Activity Computer Science  > Algorithms: Dynamic Programming - Matrix Chain Multiplication with C Program Source Code  Follow The Check out some Basic Data Structures and Algorithms Search this site

Upload: gautam-jha

Post on 05-Mar-2016

8 views

Category:

Documents


0 download

DESCRIPTION

dynamic programing

TRANSCRIPT

Page 1: Algorithms_ Dynamic Programming - Matrix Chain Multiplication With C Program Source Code - The Learning Point

7/21/2019 Algorithms_ Dynamic Programming - Matrix Chain Multiplication With C Program Source Code - The Learning Point

http://slidepdf.com/reader/full/algorithms-dynamic-programming-matrix-chain-multiplication-with-c-program 1/14

11/30/2015 Algorithms: Dynamic Programming - Matrix Chain Multiplication with C Program Source Code - the learning point

http://www.thelearningpoint.net/computer-science/algorithms-dynamic-programming---matrix-chain-multiplication

the

learningpoint

Home Math Physics Chemistry Computer Science EE English

CBSE/ICSE/IIT About Recent Site Activity

Computer Science

>

Algorithms: Dynamic

Programming - Matrix Chain

Multiplication with C Program

Source Code

Follow The

Check

out

some

Basic Data Structures and

Algorithms

Search this site

Page 2: Algorithms_ Dynamic Programming - Matrix Chain Multiplication With C Program Source Code - The Learning Point

7/21/2019 Algorithms_ Dynamic Programming - Matrix Chain Multiplication With C Program Source Code - The Learning Point

http://slidepdf.com/reader/full/algorithms-dynamic-programming-matrix-chain-multiplication-with-c-program 2/14

11/30/2015 Algorithms: Dynamic Programming - Matrix Chain Multiplication with C Program Source Code - the learning point

http://www.thelearningpoint.net/computer-science/algorithms-dynamic-programming---matrix-chain-multiplication 2

great

books

for

Computer

Science,

Programming

and

Tech

Interviews!

To go

through

the C

program /

source-

code,

scroll

down to

the end of

this page

Matrix

Chain

Multiplication

Dynamic

Programming

solves

problems

by

Sorting- at a glance

Bubble Sort - One of the mostelementary 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

programming. An explanation

and step through of how the

algorithm works, as well as the

source code for a C program

which performs insertion sort.

Selection Sort - Another

quadratic time sorting algorithm

- an example of a greedy

algorithm. An explanation and

step through of how the

Queries? Contact:

updates AT

thelearningpoint.net

ICSE/ISC/CBSE Results

CBSE 2015 K12 School-wise

Results

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

Page 3: Algorithms_ Dynamic Programming - Matrix Chain Multiplication With C Program Source Code - The Learning Point

7/21/2019 Algorithms_ Dynamic Programming - Matrix Chain Multiplication With C Program Source Code - The Learning Point

http://slidepdf.com/reader/full/algorithms-dynamic-programming-matrix-chain-multiplication-with-c-program 3/14

11/30/2015 Algorithms: Dynamic Programming - Matrix Chain Multiplication with C Program Source Code - the learning point

http://www.thelearningpoint.net/computer-science/algorithms-dynamic-programming---matrix-chain-multiplication 3

combining

the

solutions

to

subproblems

just like

the divide

and

conquer

method. Dynamic

programming

method is

used to

solve theproblem

of

multiplication

of a chain

of matrices

so that

the fewest

totalscalar

multiplications

are

performed.

Given a

chain (A1,

A2, A3,

A4….An)

of n

matrices,

we wish

to

compute

algorithm works, as well as the

source code for a C program

which performs selection sort.

Shell Sort- An inefficient but

interesting algorithm, the

complexity of which is not

exactly known.

Merge Sort An example of a

Divide and Conquer algorithm.

Works in O(n log n) time. The

memory complexity for this is a

bit of a disadvantage.

Quick Sort In the average case,

this works in O(n log n) time. Noadditional memory overhead -

so this is better than merge sort

in this regard. A partition

element is selected, the array is

restructured such that all

elements greater or less than

the partition are on opposite

sides of the partition. These two

parts of the array are then

sorted recursively.

Heap Sort- Efficient sorting

algorithm which runs in O(n log

n) time. Uses the Heap data

structure.

Binary Search Algorithm-

Commonly used algorithm usedto 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

Page 4: Algorithms_ Dynamic Programming - Matrix Chain Multiplication With C Program Source Code - The Learning Point

7/21/2019 Algorithms_ Dynamic Programming - Matrix Chain Multiplication With C Program Source Code - The Learning Point

http://slidepdf.com/reader/full/algorithms-dynamic-programming-matrix-chain-multiplication-with-c-program 4/14

11/30/2015 Algorithms: Dynamic Programming - Matrix Chain Multiplication with C Program Source Code - the learning point

http://www.thelearningpoint.net/computer-science/algorithms-dynamic-programming---matrix-chain-multiplication 4

the

product. A

product

of matrices

is fully

parenthesized

if it is

either a

single

matrix or

the

product of

fully

parenthesized matrixproducts,

surrounded

by

parenthesis.

Since,

matrix

multiplication

isassociative

all parenthesizations

yield the

same

product.

But, the

way we

parenthesize

a chain of

matrices

have an

impact on

the cost

of

Stacks Last In First Out data

structures ( LIFO ). Like a stack of

cards from which you pick up the

one on the top ( which is the last

one to be placed on top of the

stack ). Documentation of the

various operations and the

stages a stack passes through

when elements are inserted or

deleted. C program to help you

get an idea of how a stack is

implemented in code.

Queues First in First Out data

structure (FIFO). Like people

waiting to buy tickets in a queue

- the first one to stand in the

queue, gets the ticket first and

gets to leave the queue first.

Documentation of the various

operations and the stages a

queue passes through as

elements are inserted or deleted.

C Program source code to help

you get an idea of how a queueis implemented in code.

Single Linked List A self

referential data structure. A list

of elements, with a head and a

tail; each element points to

another of its own kind.

Double Linked List - A self

referential data structure. A list

of elements, with a head and a

tail; each element points to

another of its own kind in front

of it, as well as another of its

own kind, which happens to be

behind it in the sequence.

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 Programming-

Arrays, 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

Page 5: Algorithms_ Dynamic Programming - Matrix Chain Multiplication With C Program Source Code - The Learning Point

7/21/2019 Algorithms_ Dynamic Programming - Matrix Chain Multiplication With C Program Source Code - The Learning Point

http://slidepdf.com/reader/full/algorithms-dynamic-programming-matrix-chain-multiplication-with-c-program 5/14

11/30/2015 Algorithms: Dynamic Programming - Matrix Chain Multiplication with C Program Source Code - the learning point

http://www.thelearningpoint.net/computer-science/algorithms-dynamic-programming---matrix-chain-multiplication 5

evaluating

the

product.

We divide

a chain of

matrices

to be

multiplied into

two

optimal

sub-

chains,

and then

theoptimal

parenthesizations

of the

sub-

chains

must

be composed

of optimalchains.

Algorithm

- this has

been

covered in

the

tutorial

document:

A block of

memory

cache is

Circular Linked List Linked list

with no head and tail - elements

point to each other in a circular

fashion.

Binary Search Trees A basic

form of tree data structures.

Inserting and deleting

elements in them. Different

kind of binary tree traversal

algorithms.

Heaps - A tree like data

structure where every element

is lesser (or greater) than the

one above it. Heap formation,sorting using heaps in O(n log

n) time.

Height Balanced

Trees - Ensuring that trees

remain balanced to optimize

complexity of operations which

are performed on them.

Graphs

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:

Page 6: Algorithms_ Dynamic Programming - Matrix Chain Multiplication With C Program Source Code - The Learning Point

7/21/2019 Algorithms_ Dynamic Programming - Matrix Chain Multiplication With C Program Source Code - The Learning Point

http://slidepdf.com/reader/full/algorithms-dynamic-programming-matrix-chain-multiplication-with-c-program 6/14

11/30/2015 Algorithms: Dynamic Programming - Matrix Chain Multiplication with C Program Source Code - the learning point

http://www.thelearningpoint.net/computer-science/algorithms-dynamic-programming---matrix-chain-multiplication 6

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 somenumber

then that

denotes

the return

value

of multiply

(i,j). We

store it toavoid

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.

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

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)

0

Page 7: Algorithms_ Dynamic Programming - Matrix Chain Multiplication With C Program Source Code - The Learning Point

7/21/2019 Algorithms_ Dynamic Programming - Matrix Chain Multiplication With C Program Source Code - The Learning Point

http://slidepdf.com/reader/full/algorithms-dynamic-programming-matrix-chain-multiplication-with-c-program 7/14

11/30/2015 Algorithms: Dynamic Programming - Matrix Chain Multiplication with C Program Source Code - the learning point

http://www.thelearningpoint.net/computer-science/algorithms-dynamic-programming---matrix-chain-multiplication 7

be

followed

by rows of

first matrix,

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 sub-

parts of a problem first.

Integer Knapsack problemAn

elementary problem, often

used to introduce the concept

of dynamic programming.

Matrix Chain

Multiplication Given a long

chain of matrices of varioussizes, 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

Page 8: Algorithms_ Dynamic Programming - Matrix Chain Multiplication With C Program Source Code - The Learning Point

7/21/2019 Algorithms_ Dynamic Programming - Matrix Chain Multiplication With C Program Source Code - The Learning Point

http://slidepdf.com/reader/full/algorithms-dynamic-programming-matrix-chain-multiplication-with-c-program 8/14

11/30/2015 Algorithms: Dynamic Programming - Matrix Chain Multiplication with C Program Source Code - the learning point

http://www.thelearningpoint.net/computer-science/algorithms-dynamic-programming---matrix-chain-multiplication 8

Matrix

Chain

Multiplication

- C Program

Source Code

#include<string.h>

problems in Greedy algorithms -

Fractional Knapsack, Task

Scheduling. Along with C

Program source code.

Data Compression using

Huffman TreesCompression

using Huffman Trees. A greedy

technique for encoding

information.

Page 9: Algorithms_ Dynamic Programming - Matrix Chain Multiplication With C Program Source Code - The Learning Point

7/21/2019 Algorithms_ Dynamic Programming - Matrix Chain Multiplication With C Program Source Code - The Learning Point

http://slidepdf.com/reader/full/algorithms-dynamic-programming-matrix-chain-multiplication-with-c-program 9/14

11/30/2015 Algorithms: Dynamic Programming - Matrix Chain Multiplication with C Program Source Code - the learning point

http://www.thelearningpoint.net/computer-science/algorithms-dynamic-programming---matrix-chain-multiplication 9

#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 mSo for no loss of generality we will put d[0] t

start the index from 1

*/

int d[100100];

/* Cache is used to store the result of the fu

do not know the result. If it is some number

We store it to avoid computing the same ag*/

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 possi

is minimum */

for(iter=from;iter<to;iter++)

/* Update the result every time */

result= min(result,multiply(from,ite

return result;

/* Input Format: First integer must be the nu

rows of first matrix, columns of first matri

*/

Page 10: Algorithms_ Dynamic Programming - Matrix Chain Multiplication With C Program Source Code - The Learning Point

7/21/2019 Algorithms_ Dynamic Programming - Matrix Chain Multiplication With C Program Source Code - The Learning Point

http://slidepdf.com/reader/full/algorithms-dynamic-programming-matrix-chain-multiplication-with-c-program 10/14

11/30/2015 Algorithms: Dynamic Programming - Matrix Chain Multiplication with C Program Source Code - the learning point

http://www.thelearningpoint.net/computer-science/algorithms-dynamic-programming---matrix-chain-multiplication 10

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=1;iter<=number_of_matrices;ite

scanf("%d",&d[iter]);

printf("%d\n",multiply(1,number_of_mat

Related

Tutorials

(common

examples

of

Dynamic

Programming):

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

Page 11: Algorithms_ Dynamic Programming - Matrix Chain Multiplication With C Program Source Code - The Learning Point

7/21/2019 Algorithms_ Dynamic Programming - Matrix Chain Multiplication With C Program Source Code - The Learning Point

http://slidepdf.com/reader/full/algorithms-dynamic-programming-matrix-chain-multiplication-with-c-program 11/14

11/30/2015 Algorithms: Dynamic Programming - Matrix Chain Multiplication with C Program Source Code - the learning point

http://www.thelearningpoint.net/computer-science/algorithms-dynamic-programming---matrix-chain-multiplication 1

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.

Some

Important

Data

Structures

and

Algorithms,

at a

glance:

Arrays :

Popular

Sorting

and

Searching

Algorithms

Bubble

Sort

Insertion

Sort

Selection

Sort

Shell

Sort

Merge Quick

Heap

Binary

Page 12: Algorithms_ Dynamic Programming - Matrix Chain Multiplication With C Program Source Code - The Learning Point

7/21/2019 Algorithms_ Dynamic Programming - Matrix Chain Multiplication With C Program Source Code - The Learning Point

http://slidepdf.com/reader/full/algorithms-dynamic-programming-matrix-chain-multiplication-with-c-program 12/14

11/30/2015 Algorithms: Dynamic Programming - Matrix Chain Multiplication with C Program Source Code - the learning point

http://www.thelearningpoint.net/computer-science/algorithms-dynamic-programming---matrix-chain-multiplication 12

Sort Sort Sort Search

Algorithm

Basic Data

Structures

and

Operations

on them

Stacks Queues Single

Linked

List

Double

Linked

List

Circular

Linked

List

1.

Tree Data

Structures

Binary

Search Trees

Heaps Height

Balanced

Trees

Graphs and

Graph

Algorithms

Depth First

Search

Breadth

First Search

Minimum

Spanning

Trees: Kruskal

Algorithm

Minumum

Spanning

Trees: Prim's

Algorithm

Dijkstra

Algorithm for

Shortest

Paths

Floyd

Warshall

Algorithm

for Shortest

Paths

Bellman Ford

Algorithm

Popular

Page 13: Algorithms_ Dynamic Programming - Matrix Chain Multiplication With C Program Source Code - The Learning Point

7/21/2019 Algorithms_ Dynamic Programming - Matrix Chain Multiplication With C Program Source Code - The Learning Point

http://slidepdf.com/reader/full/algorithms-dynamic-programming-matrix-chain-multiplication-with-c-program 13/14

11/30/2015 Algorithms: Dynamic Programming - Matrix Chain Multiplication with C Program Source Code - the learning point

http://www.thelearningpoint.net/computer-science/algorithms-dynamic-programming---matrix-chain-multiplication 13

Algorithms in

Dynamic

Programming

Dynamic

Programming

Integer

Knapsack

problem

Matrix Chain

Multiplication

Longest

Common

Subsequence

Greedy

Algorithms

Elementary

cases :

Fractional

Knapsack

Problem,

Task

Scheduling

Data

Compression

using

Huffman

Trees