44
Computer Algorithms .

Algorithms

Embed Size (px)

Citation preview

Page 1: Algorithms

Computer Algorithms .

Page 2: Algorithms

Algorithm

● the Latin form of Al-Khw?rizm .● Algorithm:is well-defined computation

procedure that takes some value,or set of values, as input and produces some value , or set of values,as output.

● a sequence of computational steps that transfer the input into the output

● a tool for solving a well-specified computional problem

Page 3: Algorithms

Example of Algorithms :

● when you need to sort asequence of numbers into nondecreasing order (31,42,59,26,58)

Input:A sequence of n numbers (instance of program) (31,42,59,26,58).

Output:A reordering of the input sequence (26,31,42,58,59).

Page 4: Algorithms

Solve this problem with python:

def sort(a,n): i=0 for i in range(n): min=i m=i+1 for m in range(n): if a[m]<a[min]: min=m temp=a[i] a[i]=a[min] a[min]=temp

Page 5: Algorithms

Computer algorithms :

● in computer systems, an algorithm is basically an instance of logic written in software by software developers to be effective for the target computer, in order for the target machines to produce output from given input .

Page 6: Algorithms

Why computer algorithms are important ?

● The topic of algorithms is important in computer science because it allows for analysis on different ways to compute things and ultimately come up with the best way to solve a particular problem. By best I mean one that consumes the least amount of resources or has the fastest running time.

Page 7: Algorithms

What Kinds of problems are solved by algorithms?

● The Human Genome Project : made a great progress toward the goals of identifying all the 100.000 genes in human DNA determining the sequences of the 3 billion chemical base pairs that make up human DNA ,sorting the information in databases,and developing tools for data analysis.Each of these steps requires algorithms.

Page 8: Algorithms

What Kinds of problems are solved by algorithms?

● The Internet enables people around the world to quick access and retrieve large amounts of information.

● Electronic commerce enables goods and services to be exchanged electronically.

● Manufacturing and other commerical enterprises need to allocate rescources in the most beneficial way.

Page 9: Algorithms

Advantages of "Python" as a Programming Language

● Python is an interpreted, high-level programming language, pure object-oriented, and powerful server-side scripting language for the Web. Like all scripting languages, Python code resembles pseudo code. Its syntax's rules and elegant design make it readable even among multiprogrammer development teams.

Page 10: Algorithms

Advantages of "Python" as a Programming Language :

Readability : ● Python's syntax is clear and readable.● Python has fewer "dialects" than other l

languages, such as Perl. And because the block structures in Python are defined by indentations

Page 11: Algorithms

Advantages of "Python" as a Programming Language :

It Is Simple to Get Support : ● Python community always provides support

to Python users.● Python code is freely available for everyone. ● many people are creating new

enhancements to the language and sending them for approval

Page 12: Algorithms

Advantages of "Python" as a Programming Language :Fast to Learm .Fast to Code : ● Python provides fast feedback in several

ways.● Python provides a bottom-up development

style in which you can build your applications by importing and testing critical functions in the interpreter before you write the top-level code that calls the functions.

Page 13: Algorithms

Advantages of "Python" as a Programming Language :

Reusability : ● You can easily share functionality between

your programs by breaking the programs into modules, and reusing the modules as components of other programs.

Page 14: Algorithms

Advantages of "Python" as a Programming Language :

Portability : ● Besides running on multiple systems, Python

has the same interface on multiple platforms. Its design isn't attached to a specific operational system because it is written in portable ANSI C. This means that you can write a Python program on a Mac, test it using a Linux environment, and upload it to a Windows server.

Page 15: Algorithms

Advantages of "Python" as a Programming Language :

Object-Oriented Programming : ● Some of the implemented OO functionality in

Python is inheritance and polymorphism.

Page 16: Algorithms

Examples of "Python based Solutions" for different "Computer Algorithms" ..

Page 17: Algorithms

SEARCHING :

● The operation of finding the location LOC of ITEM in DATA, or printing some message that ITEM does not appear there.

● There are many differtent serarching

algorithms : The algorithm deponds on the way the information in DATA is organized.

Page 18: Algorithms

Linear Search :

● Known as sequential search● is a method for finding a particular

value in alist, that consists of checking every one of its elements, one at a time and in sequence, until the desired one is found.

Page 19: Algorithms

linear search:

#linear search in python:def linear_search (a,n,item): k=0 for k in range(n): if item ==a[k]: loc=k return loc

Page 20: Algorithms

the disadvantages of linear search :

● in linear search it needs more space and time complexity.

● in linear search if the key element is the last

element and the search is from first element that is a worst case, if the key element is the first element and the search is from last element then also is the worst case.

Page 21: Algorithms

Best, Worst and Average Cases :● Worst case :- O(n)

● Average case :- O(n).

Page 22: Algorithms

binary search :

● Suppose DATA ia an array which i stored in increasing numerical order or alphabetically.

Then There are an extremely efficient

searching algorithm , called binary search, That can be used to find the location LOC

of a given ITEM of information in DATA.

Page 23: Algorithms

Binary search :

Page 24: Algorithms

Binary Search :

def binary_search(data,n,lb,ub,item): beg=lb end=up mid=(beg+end)/2 while beg<=end and data[mid]!=item: if item<data[mid]: end=mid-1 else: beg=mid+1 mid=(beg+end)/2

Page 25: Algorithms

Binary Search :

if data[mid]==item: loc=mid else : loc=-1 return loc

Page 26: Algorithms

Best, Worst and Average cases :● Worst case :- O(log2 n). ● Average case :- O(log2 n).

Page 27: Algorithms

The Binary Search Algorithm works as follows :

● During each stage of our algorithm, our search for ITEM is reduced to a segment of element of DATA: DATA[BEG],DATA[BEG+1],.............,DATA[END]

● The algorithm compares ITEM with the middle

element DATA[MID] of the segment MID=((BEG+END)/2)

Page 28: Algorithms

The Binary Search Algorithm works as follows :

● If ITEM < DATA[MID], then ITEM can appear only in the left half of the segment:

DATA[BEG],DATA[BEG+1],.............,DATA[MID-1]-reset END=MID-1.● If ITEM > DATA[MID], then ITEM can appear

only in the right half of the segment:: DATA[MID+1],DATA[MID+2],...........,DATA[END].-reset BEG=MID+1.

Page 29: Algorithms

Limitations of the Binary Search Algorithm :

● -The Binary Search Algorithm requires two conditions:

(1) the list must be sorted. (2) direct access to the middle element in any sublist.

Page 30: Algorithms

Limitations of the Binary Search Algorithm :

● keeping data in sorted array is normally very expensive when there are many insertions and deletions.

● Thus one may use a different data structure

such as linked list or a binary search tree

Page 31: Algorithms

Sorting :

● Sorting : is the process of rearranging the data in array or list in insreasing or decreasing order .

Page 32: Algorithms

Insertion Sort :● Simple sorting algorithim .● Ii is very popular when first sorting .● Efficient for sorting small data .(more efficient than bubble and selection sort)● Slow for sorting large data, thus Time can

be saved by performing a binary search to find the location in which insert data[i] in the in input array .

● Online : can sort input array as it recevied .

Page 33: Algorithms

Insertion Sort :● insertion sort works as follows :

■ removes an element from the input data, inserting it into the correct position , to find the correct position we compare this element with each element in the input array, from right to left, until no input elements remain.

Page 34: Algorithms
Page 35: Algorithms

Insertion Sorting :def InsertionSort(data,n): for j in range(1,n): key = data[j] i = j - 1 while (data[i] > key): data[i+1] = data[i] i = i - 1 data[i+1] = key

Page 36: Algorithms

Best, Worst and Average Cases :The Best Case:

in which the input array was already sorted .This gives Inserting Sort linear running time O(n).

● The Worst Case : in which the input array was sorted in reverse order .This gives Inserting Sort quadratic running time O(n2).

● The Average Case : O(n2) .

Page 37: Algorithms

Selection Sort :● Selection sort works as follows :

● Find the location loc of the smallest element in input array and put it in the first position, find the location loc of the second smallest element and put it in the second position, And so on .

Page 38: Algorithms
Page 39: Algorithms

Selection Sort : def sort(a,n): i=0 for i in range(n): min=i m=i+1 for m in range(n): if a[m]<a[min]: min=m temp=a[i] a[i]=a[min] a[min]=temp

Page 40: Algorithms

Best, Worst and Average Cases : ● Best case : O(n2) . ● Worst case : O(n2) . ● Average case : O(n2) .

Page 41: Algorithms

Merge Sort :● Merge sort : a divide and conquer algorithm

that was invented by John von Neumann in 1945.

Page 42: Algorithms

Merge Sort :● Merge Sort works as follows :

● Divide the unsorted list into n sublists, repeatedly merge sublists to produce new sublists until each sublist contain one element . (list of one element consider sorted )

Page 43: Algorithms
Page 44: Algorithms

Best, Worst and Average Cases :● Best case : O(n log n) . ● Worst case : O(n log n) . ● Average case : O(n log n) .