so that it can be used efficiently. Is a collection of data objects and a set of legal operations to be performed on them. method of organizing large amounts of data Filing cabinets with alphabetized folders The correct choice of data structure allows major improvements in program efficiency.
ALGORITHM manipulate the data in these structures in various ways, such as inserting anew data item, searching for a particular item, or sorting the items. You can think of analgorithm as a recipe: a list of detailed instructions for carrying out an activity. Step-by-step procedure used to solve a problem These steps should be capable of being performed by a machine Must eventually stop and so produce an answer WHAT SORTS OF PROBLEMS CAN YOU SOLVE WITH A KNOWLEDGE OF THESE TOPICS?
theyre useful into three categories:
- Real-world data storage - Programmers tools - Modeling REAL-WORLD DATA STORAGE Some examples are a personnel record that describes an actual human being, an inventory record that describes an existing car part or grocery item, and a financial transaction record. A non-computer example of real-world data storage is a stack of index cards.(address book or home inventory) PROGRAMMERS TOOLS
Not all data storage structures are used to store real-world data. Typically, real-world data is accessed more or less directly by a programs user. However, some data storage structures are not meant to be accessed by the user, but by the program itself. A programmer uses such structures as tools to facilitate some other operation. Stacks, queues, and priority queues are often used in this way. REAL-WORLD MODELING
Some data structures directly model a real-world situation. Stacks, queues, and priority queues are often used for this purpose. A queue, for example, can model customers waiting in line at a bank, whereas a priority queue can model messages waiting to be transmitted over a local area network OVERVIEW OF DATA STRUCTURE OVERVIEW OF DATA STRUCTURE OVERVIEW OF ALGORITHM Many of the algorithms apply directly to specific data structures. For most data structures, you must know how to do the following: Insert a new data item. Search for a specified item. Delete a specified item. traverse through all the items in a data structure Sorting Recursion ALGORITHM ANALYSIS
Analysis: How to predict an algorithms performance How well an algorithm scales up How to compare different algorithms for a problem Data Structures How to efficiently store, access, manage data Data structures effect algorithms performance
EXAMPLE ALGORITHMS Two algorithms for computing the Factorial Which one is better?
int factorial (int n) { if (n <= 1) return 1; else return n * factorial(n-1); }
int factorial (int n) { if (n<=1) return 1; else { fact = 1; for (k=2; k<=n; k++) fact *= k; return fact; } }
EXAMPLES OF FAMOUS ALGORITHMS Constructions of Euclid Newton's root finding Fast Fourier Transform Compression (Huffman, Lempel-Ziv, GIF, MPEG) DES, RSA encryption Simplex algorithm for linear programming Shortest Path Algorithms (Dijkstra, Bellman-Ford) Error correcting codes (CDs, DVDs) TCP congestion control, IP routing Pattern matching (Genomics) Search Engines
ROLE OF ALGORITHMS IN MODERN WORLD Enormous amount of data E-commerce (Amazon, Ebay) Network traffic (telecom billing, monitoring) Database transactions (Sales, inventory) Scientific measurements (astrophysics, geology) Sensor networks. RFID tags Bioinformatics (genome, protein bank)
Amazon hired first Chief Algorithms Officer (Udi Manber)
A REAL-WORLD PROBLEM Communication in the Internet Message (email, ftp) broken down into IP packets. Sender/receiver identified by IP address. The packets are routed through the Internet by special computers called Routers. Each packet is stamped with its destination address, but not the route. Because the Internet topology and network load is constantly changing, routers must discover routes dynamically. What should the Routing Table look like? HOW TO MEASURE ALGORITHM PERFORMANCE What metric should be used to judge algorithms? Length of the program (lines of code) Ease of programming (bugs, maintenance) Memory required Running time
Running time is the dominant standard. Quantifiable and easy to compare Often the critical bottleneck
PRIMITIVE TYPES are data types provided by a programming language as basic building blocks. Primitive types are also known as built-in types or basic types. PRIMITIVE TYPES Character Integer String Double Float Array
SPECIAL TYPES Character It is a unit of information that roughly corresponds to a grapheme, grapheme-like unit, or symbol. Such as in an alphabet or syllabary.
Ex. Letter Numeral Punctuation Mark
Integer Is used to refer a data type which represents some finite subset of mathematical integers. Also known as integral data types.
Integral Types: Unsigned Signed
Binary Coded Decimal It is another representation of integer which is commonly used in mainframe financial applications and in database.
String Is an ordered sequence of symbols.
Binary string
Byte string Are used to suggest strings in which the stored data does not represent text. Double Double precision is a computer numbering format that occupies two adjacent location in computer memory.
Double or Double precision number Defined to be an integer, fixed point, or floating point. Float describes a system for numerical representation in which a string of digits (or bits) represents a real number. The term floating point refers to the fact that the radix point (decimal point, or, more commonly in computers, binary point) can "float": that is, it can be placed anywhere relative to the significant digits of the number Array Is a data structure consisting of a group that are accessed by indexing.
Classification of Array Fixed-sized arrays Dynamic arrays DIFFERENT ALGORITHMS FOR SAME PROBLEM Devise an algorithm to find the solution to a number raised to a positive power eg 4 5 or 10 3 ie number power 1 set answer to 1 2 Loop 1 to power times 2.1 answer becomes answer * number 3 report answer Notice the layout and numbering FIND THE RESULT OF NUMBER POWER 1 Set answer to 1 2 Loop for 1 to 5 times 2.1 answer becomes answer * 2 3 Report answer Answer Loop 1 1 2 2 4 3 8 4 16 5 32 ? 2 5 3 4 1 Set answer to 1 2 Loop for 1 to 4 times 2.1 answer becomes answer * 3 3 Report answer Answer Loop 1 1 3 2 9 3 27 4 81 ?