to be able to process several instructions at oncea different model or computing technique is required parallel algorithms perform more than one operation at time in the pram modelthere are serial processors that share global memory the processors can also perform various arithmetic and logical operations in parallel this enables the execution of several instructions at one time the parallel/distributed algorithms divide problem into subproblems among its processors to collect the results some sorting algorithms can be efficiently parallelizedwhile iterative algorithms are generally parallelizable deterministic versus nondeterministic algorithms deterministic algorithms will produce the same output without fail every time the algorithm is run with the same input there are some sets of problems that are so complex in the design of their solutions that expressing their solution in deterministic way can be challenge nondeterministic algorithms can change the order of execution or some internal subprocess that leads to change in the final result any time the algorithm is run as suchwith every run of nondeterministic algorithmthe output of the algorithm is different for instancean algorithm that makes use of probabilistic value will yield different outputs on successive execution depending on the value of the random number generated classification by complexity to determine the complexity of an algorithm is to try to estimate how much space (memoryand time is used overall during the computation or program execution principles of algorithm designpresents more comprehensive coverage of the subject matter on complexity we will summarize what we learned there here complexity curves now consider problem of magnitude to determine the time complexity of an algorithmwe denote it with (nthe value may fall under ( ) (log ) ( ) ( log( )) ( ) ( )or ( ndepending on the steps an algorithm performsthe time complexity may or may not be affected the notation (ncaptures the growth rate of an algorithm