17447_Ch1

download 17447_Ch1

of 35

Transcript of 17447_Ch1

  • 8/11/2019 17447_Ch1

    1/35

    Chapter 1

  • 8/11/2019 17447_Ch1

    2/35

    Algorithm

    Instruction:- Set of operations

  • 8/11/2019 17447_Ch1

    3/35

  • 8/11/2019 17447_Ch1

    4/35

    Problem for finding GCD

    First Method

  • 8/11/2019 17447_Ch1

    5/35

  • 8/11/2019 17447_Ch1

    6/35

  • 8/11/2019 17447_Ch1

    7/35

    Second method

  • 8/11/2019 17447_Ch1

    8/35

    Third Method

  • 8/11/2019 17447_Ch1

    9/35

    Method for finding Prime Number

  • 8/11/2019 17447_Ch1

    10/35

  • 8/11/2019 17447_Ch1

    11/35

  • 8/11/2019 17447_Ch1

    12/35

    Fundamentals of algorithmicproblem solving

    Understanding the problem Ascertaining the capabilities of a computationaldevice. Choosing between exact and approximateproblem solving. Deciding an appropriate Data Structure Algorithm design techniques.

    Methods of specifying an algorithm. Proving an algorithms correctness Analyzing an algorithm. Coding an algorithm

  • 8/11/2019 17447_Ch1

    13/35

  • 8/11/2019 17447_Ch1

    14/35

    Understand the given problem completely. Read the problem description carefully Ask doubts about the problem Do few examples Think about special cases like boundary value Know about the already known algorithms for solving that

    problem

    Clear about the input to an algorithm.

    14

    Step 1- Understanding the problem

  • 8/11/2019 17447_Ch1

    15/35

    Sequential Algorithms: Instructions areexecuted one after another and one operationat a time. Algorithms designed to be executed

    on such machine are called sequentialalgorithms

    Parallel Algorithms: Modern computers that

    can execute instructions in parallel. Algorithmsdesigned to be executed on such machine arecalled parallel algorithms

    Step 2- Ascertaining the Capabilities ofa computational device

  • 8/11/2019 17447_Ch1

    16/35

    Exact Algorithm: Solving problem exactly Approx. Algm. : Solving problem

    approximately Why Approx. Algm.? Some problems cannot be solved exactly

    Solving problem exactly can be unacceptablyslow because of the problem complexity.

    Step 3- Choosing between exact andapproximate problem solving

  • 8/11/2019 17447_Ch1

    17/35

    A Data structure is defined as a particularscheme of organizing related data items.

    Decide on the suitable data structure

    Step 4- Deciding on appropriate DataStructures

  • 8/11/2019 17447_Ch1

    18/35

    An algorithm design technique is a general approach tosolve problems algorithmically.The various design techniques are:Brute force

    Divide and conquerDecrease and conquerTransform and conquerGreedy approachDynamic programmingBacktracking and Branch and boundSpace and time tradeoffs

    Step 5- Algorithm Design techniques

  • 8/11/2019 17447_Ch1

    19/35

    There are 3 methods: Natural language

    Easy but ambiguous Pseudo code

    Mixture of programming language and naturallanguage

    Flow chart It is pictorial representation of the algorithm. Here symbols are used.

    Step 6- Method of specifying analgorithm

  • 8/11/2019 17447_Ch1

    20/35

    Correctness: Prove that the algm. Yields the requiredresult for every legitimate input in a finite amount oftime.A common technique for proving correctness is to use

    mathematical inductionIn order to show the algm. Is incorrect, we have to take

    just one instance of its input for which the algm. Fails.If a algm. is found to be incorrect, then reconsider oneor more those decisionsFor approx. algms. We should show that the errorproduced by the algm does not exceed the predefinedlimit.

    Step 7- Proving an algorithmscorrectness

  • 8/11/2019 17447_Ch1

    21/35

    Analyze the following qualities of the algorithmEfficiency:

    Time efficiency and Space efficiency

    Simplicity Simple algorithms mean easy to understand and easy to

    program.

    Generality Design an algm. for a problem in more general terms. In

    some cases, designing more general algm. Isunnecessary or difficult.

    OptimalityThe algorithm should produce optimal results.

    Step 8- Analyzing an algorithm

  • 8/11/2019 17447_Ch1

    22/35

    Algorithms are designed to be implementedas computer programs.

    Use code tuning technique. For eg., replacingcostlier multiplication operation with cheaperaddition operation.

    Step 9- Coding an algorithm

  • 8/11/2019 17447_Ch1

    23/35

    1-23

    Fundamental data structures

    list array

    linked list

    string

    stack

    queue priority queue/heap

    graphtree and binary tree

    set and dictionary

  • 8/11/2019 17447_Ch1

    24/35

    1-24

    Linear Data Structures

    Arrays A sequence of n items of the same

    data type that are stored contiguouslyin computer memory and madeaccessible by specifying a value of thearrays index.

    Linked List A sequence of zero or more nodes

    each containing two kinds ofinformation: some data and one ormore links called pointers to othernodes of the linked list.

    Singly linked list (next pointer) Doubly linked list (next + previous

    pointers)

    Arraysfixed length (need preliminaryreservation of memory)contiguous memory locations

    direct accessInsert/deleteLinked Lists

    dynamic lengtharbitrary memory locations

    access by following linksInsert/delete

    a1 ana2 .

  • 8/11/2019 17447_Ch1

    25/35

    1-25

    Stacks and Queues

    Stacks A stack of plates

    insertion/deletion can be done only at the top. LIFO

    Two operations (push and pop) Queues

    A queue of customers waiting for services Insertion/enqueue from the rear and deletion/dequeue from the

    front. FIFO

    Two operations (enqueue and dequeue)

  • 8/11/2019 17447_Ch1

    26/35

    1-26

    Priority Queue and Heap

    Priority queues (implemented using heaps ) A data structure for maintaining a set of elements, each associated

    with a key/priority, with the following operations

    Finding the element with the highest priority Deleting the element with the highest priority

    Inserting a new element Scheduling jobs on a shared computer

    96 8

    5 2 3

    9 6 58 2 3

  • 8/11/2019 17447_Ch1

    27/35

    1-27

    Graphs Formal definition

    A graph G = is defined by a pair of two sets: a finiteset V of items called vertices and a set E of vertex pairscalled edges .

    Undirected and directed graphs ( digraphs ). maximum number of edges in an undirected

    graph with |V| vertices Complete graphs

    A graph with every pair of its vertices connected by anedge is called complete, K |V|

  • 8/11/2019 17447_Ch1

    28/35

    1-28

    Graph Representation Adjacency matrix

    n x n boolean matrix if |V| is n. The element on the ith row and jth column is 1 if

    theres an edge from ith vertex to the jth vertex;otherwise 0.

    The adjacency matrix of an undirected graph issymmetric. Adjacency linked lists

    A collection of linked lists, one for each vertex, thatcontain all the vertices adjacent to the lists vertex.

    Which data structure would you use if the graph is a 100-node starshape?

    0 1 1 10 0 0 10 0 0 10 0 0 0

    2 3 444

  • 8/11/2019 17447_Ch1

    29/35

    1-29

    Weighted Graphs

    Weighted graphs Graphs or digraphs with numbers assigned to the edges.

    - A dense graph is a graph in which the numberof edges is close to the maximal number ofedges. The opposite, a graph with only a fewedges, is a sparse graph .

    1 2

    3 46

    8

    57

    9

    3

    G h P ti P th d C ti it

    https://en.wikipedia.org/wiki/Graph_(mathematics)https://en.wikipedia.org/wiki/Graph_(mathematics)https://en.wikipedia.org/wiki/Graph_(mathematics)
  • 8/11/2019 17447_Ch1

    30/35

    1-30

    Graph Properties -- Paths and Connectivity

    Paths

    A path from vertex u to v of a graph G is defined as asequence of adjacent (connected by an edge) verticesthat starts with u and ends with v.

    Simple paths : All edges of a path are distinct. Path lengths: the number of edges, or the number of

    vertices 1. Connected graphs

    A graph is said to be connected if for every pair of itsvertices u and v there is a path from u to v.

    Connected component The maximum connected subgraph of a given graph.

  • 8/11/2019 17447_Ch1

    31/35

  • 8/11/2019 17447_Ch1

    32/35

    1-32

    Trees Trees

    A tree (or free tree ) is a connected acyclic graph. Forest: a graph that has no cycles but is not

    necessarily connected. Properties of trees

    - For every two vertices in a tree there always existsexactly one simple path from one of these verticesto the other.

    Rooted trees : The above property makes it possible to select an

    arbitrary vertex in a free tree and consider it as the root of the socalled rooted tree. Levels in a rooted tree.

    |E| = |V| - 1

    1 3

    2 4

    51

    3

    2

    4 5

  • 8/11/2019 17447_Ch1

    33/35

    1-33

    Rooted Trees (I) Ancestors

    For any vertex v in a tree T , all the vertices on thesimple path from the root to that vertex are calledancestors.

    Descendants All the vertices for which a vertex v is an ancestor

    are said to be descendants of v . Parent, child and siblings

    If (u, v) is the last edge of the simple path from theroot to vertex v , u is said to be the parent of v and v is called a child of u .

    Vertices that have the same parent are calledsiblings.

    Leaves A vertex without children is called a leaf.

    Subtree A vertex v with all its descendants is called the

    subtree of T rooted at v .

  • 8/11/2019 17447_Ch1

    34/35

    1-34

    Rooted Trees (II)

    Depth of a vertex The length of the simple path from the root to the vertex.

    Height of a tree The length of the longest simple path from the root to a leaf.

    1

    3

    2

    4 5

    h = 2

  • 8/11/2019 17447_Ch1

    35/35

    1 35

    Ordered Trees Ordered trees

    An ordered tree is a rooted tree in which all the children ofeach vertex are ordered. Binary trees

    A binary tree is an ordered tree in which every vertex has nomore than two children and each children is designated s

    either a left child or a right child of its parent. Binary search trees Each vertex is assigned a number. A number assigned to each parental vertex is larger than all

    the numbers in its left subtree and smaller than all the

    numbers in its right subtree. log2n h n 1, where h is the height of a binary tree and n the size.

    96 8

    5 2 3

    63 9

    2 5 8