Reference no: EM132964267
MOD002641 Data Structures And Algorithms - Anglia Ruskin University
Task A: Search Algorithm Analysis
In this task you will be comparing the performance of your selected array search algorithm (ternary, exponential or Fibonaccian) to the search algorithms provided as examples using both static analysis and empirical experimentation. Closely follow the structure or the test harness and search functions provided as examples (Jump Search example in Appendix A) to implement your chosen algorithm; note that you are only required to examine the scenario of successful searches. The examples are written in MATLAB, but you are free to use an alternative language if you wish (e.g., Python); however, you will then need to convert the examples I have provided to that language to enable you to plot graphs that compare their empirical performance to that of your chosen algorithm. If you use Python, you could use matplotlib to plot graphs; if you use a language like C# or Java you may need to store your results in a text file and plot them using Excel or similar. Obviously, the easiest approach is to use MATLAB and simply modify the examples provided.
Task B: Sort Algorithm Analysis
In this task you will empirically compare three different gap sequence functions that can be used with the Shell sort algorithm, and compare to Shell (1959). Appendix B contains an example function for generating Shell's original gap sequence, an implementation of Shell sort that uses Shell's original gap sequence function, and a table of alternative sequences, including algebraic processes that can generate them, the first few terms of each sequence, and the worst case time complexities that are thought to be produced when these gap sequences are used. As noted in class, big-O notation, and especially worst case analyses, do not necessarily capture how an algorithm will function in the real world, so this task requires that you create a simulation to test the following scenarios: i. reversed arrays (the putative worst case scenario); ii. random arrays of different lengths containing unique values. Note that, unlike Task A, your test harness cannot test all possibilities (i.e., arrays unsorted in all possible ways) because there are too many (n!). You will discuss the results of your experimentation and compare the relative performance of the gap sequences you selected. Do not shy away from choosing gap sequences that share worst case time complexities, as there could be differences in performance in practice that would be interesting to uncover. For sorting there are two unit of work that will test us how much work the algorithm has done: comparisons and element moves. You will need to add to the Shell sort function provided to ensure that this information is recorded. You may use any language you wish, but clearly MATLAB and Python with matplotlib provide in-built data science functions for graph plotting and statistics, so will be easier.
Precise Description of Shell Sort Algorithm and the Role of the Gap Sequence
Task C: Hash Function Analysis
In this task, you are to perform an empirical comparison of the efficacy of three different hash functions (selecting from midsquare, modulus, folding, truncation, and Fibonacci) to assess their usefulness for transforming integer keys to array indices in a hash table with the objective of minimising collisions and clustering. This task is a little more open-ended than the previous two, however you should build a simulation that involves the generation of keys (random and sequential) and measure the degree of clustering (i.e., how evenly spread the keys are in the table) under different load factors, how often collisions occur, and also evaluate the avalanche property and other desirable features of a hash function, such as having a surjective relationship with the target array and being fast to compute. For each, do some background reading to understand how they may be applied in practice (e.g., folding may, in practice, involve grouping digits before summing), and state any assumptions you make.
Attachment:- Data Structures And Algorithms.rar
Indicate whether the events after the reporting period be
: Indicate whether the events after the reporting period should be classified as 'adjusting' or non-adjusting' events and suggest appropriate accounting
|
Opportunities and drawbacks offered by covid-19
: What are opportunities and drawbacks offered by COVID-19 for multinational companies on international scale in the context of International Human Resource Manag
|
How much do dexter and molly need to deposit into account
: How much do Dexter and Molly need to deposit into the account at the end of each of the next 35 years to accomplish their goals?
|
Describe the stages of the active listening cycle
: a) List and describe the three (3) stages of the Active Listening cycle.
|
MOD002641 Data Structures And Algorithms Assignment
: MOD002641 Data Structures And Algorithms Assignment Help and Solution, Anglia Ruskin University - Assessment Writing Service
|
What proportion should invest in the risky portfolio
: Your client wants to invest a proportion, What proportion should she invest in the risky portfolio, P, and what proportion in the risk-free asset?
|
Efficiency and effectiveness of organization
: How Kaizen Costing can be use to help SMEs to improve the efficiency and effectiveness of their organization in the perspective of digital transformation?
|
Why would or not hold gold in one portfolio
: In light of the apparent inferiority of gold with respect to both mean return and volatil- ity, would anyone hold gold? If so, demonstrate graphically
|
Find how many shares of common stock are outstanding
: How many shares of common stock are outstanding? Preferred Stock - $100 par, 100,000 shares authorized 580,000. Retained Earnings 240,000
|