Knowledge

Algorithm

Source 📝

267:, designed for practical implementation). In this sense, it resembles other mathematical disciplines in that the analysis focuses on the underlying principles driving the algorithm, and not it's particular implementation. The 'coding' (more properly 'codifying' though this terminology is seldom, if ever, used) of algorithms in such an abstract manner is termed 'writing 157:
Correctly performing an algorithm will not solve a problem if the algorithm is flawed, or not appropriate to the problem. For example, performing the potato salad algorithm will fail if there are no potatoes present, even if all the motions of preparing the salad are performed as if the potatoes were
190:
Because an algorithm is a precise list of precise steps, the order of computation will almost always be critical to the functioning of the algorithm. Instructions are usually assumed to be listed explicitly, and are described as starting 'from the top' and going 'down to the bottom', an idea that is
153:
Different algorithms may complete the same task with a different set of instructions in more or less time, space, or effort than others. A cooking recipe is an example of an algorithm. Given two different recipes for making potato salad, one may have "peel the potato" before "boil the potato" while
290:
Imagine you have an unsorted list of random numbers. Our goal is to find the highest number in this list. Upon first thinking about the solution, you will realize that you must look at every number in the list. Upon further thinking, you will realize that you need to look at each number only once.
186:
For any such computational process, the algorithm must be rigorously defined: specified in the way it applies in all possible circumstances that could arise. That is, any conditional steps must be systematically dealt with, case-by-case; the criteria for each case must be clear (and computable).
278:
to procedures that eventually finish. Others include procedures that could run forever without stopping, arguing that a computer may be required to carry out an ongoing task. Other requirements beside having an ending state, then, are used to determine if the algorithm successfully completes a
584:
Algorithms are usually discussed with the assumption that computers execute each instruction of an algorithm at a time. Those computers are sometimes called serial computers. An algorithm designed for such an environment is called a serial algorithm, as opposed to
174:
is essentially an algorithm that tells the computer what specific steps to perform (in what specific order) in order to carry out a specified task, such as calculating employees' paychecks or printing students' report cards.
178:
Typically, when an algorithm is associated with processing information, data is read from an input source or device, written to an output sink or device, and/or stored for further use. Stored data is regarded as part of the
126:
is an interpretable, finite set of instructions for dealing with contingencies and accomplishing some task which can be anything that has a recognizable end-state, end-point, or result for all inputs. (contrast with
565:
works bottom-up by building progressively larger solutions to subproblems arising from the original problem, and then uses those solutions to obtain the final result. Many problems (such as playing
507:, and the demonstration that every method yet found for describing "well-defined procedures" advanced by other mathematicians could be emulated on a Turing machine (a statement known as the 361:
As it happens, most people who implement algorithms want to know how much of a particular resource (such as time or storage) a given algorithm requires. Methods have been developed for the
337:
as used here indicates assignment. That is, the value on the right-hand side of the expression is assigned to the container (or variable) on the left-hand side of the expression.
154:
the other presents the steps in the reverse order, yet they both call for these steps to be repeated for all potatoes and end when the potato salad is ready to be eaten.
202:. This is the most common conception, and it attempts to describe a task in discrete, 'mechanical' means. Unique to this conception of formalized algorithms is the 619: 599:
processes, with a cycle of random mutations yielding successive generations of 'solutions'. Thus, they emulate reproduction and "survival of the fittest". In
557:
reduces an instance of a problem to one or more smaller instances of the same problem, until the instances are small enough to be directly expressible in the
514:
Nowadays, a formal criterion for an algorithm is that it is a procedure implementable on a completely-specified Turing machine or one of the equivalent
327:
counter = 1 largest = List while counter <= Length: if List > largest: largest = List counter = counter + 1 print largest
180: 206:, setting the value of a variable. It derives from the intuition of 'memory' as a scratchpad. There is an example below of such an assignment. 469: 252:, or performing arithmetic with pen and paper or its mental equivalent - most people use algorithms they learned as a child to do this. 365:
to obtain such quantitative answers, and after reading that section, you will determine that this algorithm has a time requirement of O(
483:
The lack of mathematical rigor in the "well-defined procedure" definition of algorithms posed some difficulties for mathematicians and
700:. "This is a dictionary of algorithms, algorithmic techniques, data structures, archetypical problems, and related definitions." 542:
is one that invokes (makes reference to) itself repeatedly until a certain condition matches, which is a method common to
106: 94: 146:
In formal mathematical terms, an algorithm is considered to be any sequence of operations which can be performed by a
110: 90: 102: 589:, which take advantage of computer architectures where several processors can work on a problem at the same time. 681: 523: 603:, this approach is extended to algorithms, by regarding the algorithm itself as a 'solution' to a problem. 551: 78: 37: 461:. The word has now evolved to include all definite procedures for solving problems or performing tasks. 574: 578: 67: 26: 543: 362: 256: 210: 199: 558: 508: 313: 264: 203: 8: 600: 562: 539: 198:
So far, this discussion of the formalization of an algorithm has assumed the premises of
53: 654: 624: 607: 586: 343:
as used here indicates the counter element of the list. For example: if the value of
713: 664: 649: 592: 21: 639: 547: 522:: deciding when an algorithm describes a terminating procedure. In practical terms 260: 241: 237: 171: 74: 33: 519: 450: 225:
is a well-defined method or procedure for solving a problem such as a problem in
147: 710:
Algorithms and Data Structures: Growing work on algorithms and data structures
676: 659: 634: 496: 370: 689: 136: 550:
works by making a series of simple decisions that are never reconsidered. A
301:
Only if this next number is larger, then keep that as the new largest number
629: 577:
specifies rules for moving around a graph and is useful for such problems.
570: 492: 488: 458: 402: 291:
Taking this into account, here is a simple algorithm to accomplish this:
527: 504: 230: 226: 526:
matters more: it includes the puzzling problem of the algorithms called
477: 446: 309: 268: 140: 685:, Vol 1-3, Addison Wesley 1998. Widely held as a definitive reference. 596: 554: 515: 132: 128: 98: 530:, which are generally presumed to take more than polynomial time. 500: 465: 441: 426: 263:, and is often practiced abstractly (without the use of a specific 167: 581:
are those that make some choices randomly (or pseudo-randomly).
431: 422: 398: 718:
Code and documentation for algorithms and data structure, under
688:
Gaston H. Gonnet and Ricardo Baeza-Yates: Example programs from
304:
Repeat steps 2 and 3 until you have gone through the whole list.
298:
Look at the next number, and compare it with this largest number
495:. This problem was largely solved with the description of the 249: 595:
attempt to find solutions to problems by mimicking biological
644: 566: 484: 245: 697: 473: 295:
Pretend the first number in the list is the largest number.
56:
to this revision, which may differ significantly from the
719: 410: 406: 308:
And here is a more formal coding of the algorithm in a
561:
employed (what is 'direct' is often discretionary). A
476:, from which she earns the title of the world's first 722:
and GFL (Note: The collection is constantly growing).
244:
or a machine. They may even be performed directly by
445:
originally referred only to the rules of performing
58: 694:Free source code for lots of important algorithms. 221:Once a formal description has been obtained, an 240:but can be implemented by other means, such as 229:; or otherwise relating to the manipulation of 357:as used here indicates 'less than or equal to' 213:for an alternate conception of an algorithm. 464:The first case of an algorithm written for a 236:Algorithms are now most often implemented as 698:Dictionary of Algorithms and Data Structures 131:). Algorithms often have steps that repeat ( 691:Handbook of Algorithms and Data Structures. 287:Here is a simple example of an algorithm. 470:Ada Byron's notes on the analytical engine 216: 538:Algorithms come in different flavours. A 403:Abu Ja'far Mohammed ibn Musa al-Khwarizmi 183:of the entity performing the algorithm. 66:Revision as of 04:23, 22 January 2004 by 533: 161: 47: 518:. Turing's initial interest was in the 65: 14: 704: 610:discussed in Knowledge is available. 44: 25: 377:stands for the length of the list. 351:refers to the 5 element of the list. 166:Algorithms are essential to the way 17: 119: 88: 419:Rules of Restoration and Reduction 397:, which came from the name of the 120: 734: 413:). He was the author of the book 389:is a corruption of early English 52:. The present address (URL) is a 569:) can be modeled as problems on 274:Some restrict the definition of 257:analysis and study of algorithms 143:) until the task is completed. 682:The Art of Computer Programming 524:computational complexity theory 170:process information, because a 439:from the book title. The word 13: 1: 670: 563:dynamic programming algorithm 715:Savannah - Algorithm Project 552:divide-and-conquer algorithm 7: 613: 575:graph exploration algorithm 415:Kitab al-jabr w'al-muqabala 259:is a central discipline of 191:described more formally by 24:of this page, as edited by 10: 739: 380: 282: 248:: think for example of an 499:, an abstract model of a 630:Cryptographic algorithms 579:Probabilistic algorithms 393:, which came from Latin 312:that is similar to most 135:) or require decisions ( 435:itself originates from 217:Implementing algorithms 620:Bulletproof algorithms 544:functional programming 363:analysis of algorithms 211:functional programming 200:imperative programming 45:04:23, 22 January 2004 534:Classes of algorithms 314:programming languages 162:Formalized algorithms 559:programming language 509:Church-Turing thesis 330:Notes on notation: 265:programming language 204:assignment operation 122:Broadly-defined, an 705:Other Web Reference 601:genetic programming 587:parallel algorithms 540:recursive algorithm 421:) which introduced 95:← Previous revision 665:Genetic Algorithms 655:List of algorithms 625:Numerical analysis 608:list of algorithms 593:Genetic algorithms 650:String algorithms 640:Search algorithms 453:but evolved into 242:electric circuits 238:computer programs 730: 548:greedy algorithm 261:computer science 172:computer program 107:Newer revision → 85: 82: 61: 59:current revision 51: 50: 46: 42: 41: 738: 737: 733: 732: 731: 729: 728: 727: 707: 673: 635:Sort algorithms 616: 536: 520:halting problem 451:Arabic numerals 383: 328: 285: 219: 193:flow of control 164: 148:Turing-complete 118: 117: 116: 115: 114: 99:Latest revision 87: 86: 83: 72: 70: 57: 48: 31: 29: 12: 11: 5: 736: 726: 725: 724: 723: 706: 703: 702: 701: 695: 686: 677:Donald E Knuth 672: 669: 668: 667: 662: 660:Data structure 657: 652: 647: 642: 637: 632: 627: 622: 615: 612: 535: 532: 497:Turing machine 493:20th centuries 401:mathematician 382: 379: 371:big O notation 359: 358: 352: 338: 319:Given: a list 318: 306: 305: 302: 299: 296: 284: 281: 218: 215: 181:internal state 163: 160: 68: 54:permanent link 27: 16: 15: 9: 6: 4: 3: 2: 735: 721: 717: 716: 712: 711: 709: 708: 699: 696: 693: 692: 687: 684: 683: 678: 675: 674: 666: 663: 661: 658: 656: 653: 651: 648: 646: 643: 641: 638: 636: 633: 631: 628: 626: 623: 621: 618: 617: 611: 609: 604: 602: 598: 594: 590: 588: 582: 580: 576: 572: 568: 564: 560: 556: 553: 549: 545: 541: 531: 529: 525: 521: 517: 512: 510: 506: 503:described by 502: 498: 494: 490: 486: 481: 479: 475: 471: 467: 462: 460: 456: 452: 448: 444: 443: 438: 434: 433: 428: 425:to people in 424: 420: 416: 412: 408: 404: 400: 396: 392: 388: 378: 376: 373:was used and 372: 369:), where the 368: 364: 356: 353: 350: 346: 342: 339: 336: 333: 332: 331: 326: 322: 317: 315: 311: 303: 300: 297: 294: 293: 292: 288: 280: 277: 272: 270: 266: 262: 258: 253: 251: 247: 243: 239: 234: 232: 228: 224: 214: 212: 207: 205: 201: 196: 194: 188: 184: 182: 176: 173: 169: 159: 155: 151: 149: 144: 142: 138: 134: 130: 125: 112: 108: 104: 100: 96: 92: 80: 76: 71: 64: 63: 60: 55: 39: 35: 30: 23: 714: 690: 680: 605: 597:evolutionary 591: 583: 537: 513: 482: 463: 459:18th century 454: 440: 436: 430: 418: 414: 394: 390: 386: 384: 374: 366: 360: 354: 348: 344: 340: 334: 329: 324: 320: 307: 289: 286: 275: 273: 254: 235: 222: 220: 208: 197: 192: 189: 185: 177: 165: 156: 152: 145: 123: 121: 22:old revision 19: 18: 555:recursively 528:NP-complete 505:Alan Turing 472:written in 429:. The word 347:is 5, then 231:information 227:mathematics 20:This is an 671:References 516:formalisms 491:and early 478:programmer 447:arithmetic 395:algorismus 323:of length 310:pseudocode 269:pseudocode 141:comparison 485:logicians 455:algorithm 391:algorisme 387:algorithm 385:The word 276:algorithm 223:algorithm 168:computers 150:system. 129:heuristic 124:algorithm 614:See also 501:computer 466:computer 442:algorism 427:the West 279:task. 158:there. 79:contribs 38:contribs 487:of the 457:by the 437:al-Jabr 432:algebra 423:algebra 399:Persian 381:History 345:counter 283:Example 271:'. 133:iterate 571:graphs 449:using 409:- ca. 325:Length 250:abacus 246:humans 69:Snoyes 28:Snoyes 645:Merge 567:chess 511:). 405:(ca. 355:<= 349:list, 137:logic 84:(sp.) 49:(sp.) 573:. A 546:. A 489:19th 474:1842 468:was 341:List 321:List 255:The 209:See 139:and 111:diff 105:) | 103:diff 91:diff 75:talk 34:talk 720:GPL 679:: 480:. 411:845 407:780 316:: 233:. 195:. 43:at 606:A 97:| 93:) 77:| 36:| 417:( 375:n 367:n 335:= 113:) 109:( 101:( 89:( 81:) 73:( 62:. 40:) 32:(

Index

old revision
Snoyes
talk
contribs
permanent link
current revision
Snoyes
talk
contribs
diff
← Previous revision
Latest revision
diff
Newer revision →
diff
heuristic
iterate
logic
comparison
Turing-complete
computers
computer program
internal state
imperative programming
assignment operation
functional programming
mathematics
information
computer programs
electric circuits

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.