本次算法代写要求使用提供的文档，在一个模拟的case中编写随机算法，用于查找ID为x的文件，该文件的最多调用次数需要满足要求提供的时间复杂度，完成时按照sample document的格式编写伪代码并用文字说明算法的实现原理及过程。

### Ground Rules

- The homework is worth 5 points (out of a total of 100 points you can accumulate in this course).
- The homework is to be done and submitted individually. You may discuss homework problems with
*at most one*other person from either section (and mention this person’s name on your submission), but you must write up solutions on your own. - You are not allowed to consult any material outside of assigned textbooks and material the instructors post on the course websites. In particular, consulting the internet will be considered plagiarism and penalized appropriately.
- The homework is due at 11:59 PM on the due date. No extensions to the due date will be given under any circumstances.
- Homework must be submitted electronically on canvas. We will not accept paper submissions. Canvas accepts files in pdf/doc/jpeg formats.

### Problem (page limit: 3 pages)

You are a police officer trying to crack a case. You want to check whether an important file is in the evidence room. Files have IDs that are positive integers and the evidence room contains *n *files in sorted order of their IDs. Unfortunately, you do not have direct access to the evidence room; the only one who has access is Randy, who is corrupt and wants to make things hard for you. In the following we assume that *x *is the file ID you are looking for.

- You know that the evidence room is organized as a sorted list of
*n*If Randy was not corrupt you would probably do binary search by asking him to give you the median file of the list. Unfortunately, you can only give Randy two indices*l, u*and he returns to you a file with index chosen uniformly at random from the range*{**l, . . . , u**}*. That is you can call

RANDY(*l, **u*) = (*i, a** _{i}*)

*,*where

*i*is a uniformly random integer chosen from

*l, . . . , u*inclusive

and *a** _{i}* is the ID of the corresponding file.

You solve the problem by doing something similar to binary search. You start by calling RANDY(1*, n*). Let’s assume that Randy returns (*i, a** _{i}*). You compare

*x*to

*a*

*.*

_{i}- If
*x*=*a*you found the file you were looking_{i} - If
*x < a*you call RANDY(1_{i}*,**i**−*1) - If
*x > a*you call RANDY(_{i}*i*+ 1*, n*).

You continue recursively until you have either found the file or conclude that the file is not present in the evidence room. Show that the above algorithm accesses *O*(log *n*) files in expectation before it terminates.

- With his trick in the previous question Randy was not able to slow you down very much1. Now he decides to disallow “range” queries as above and only allows either sequential access to the files or access to a uniformly random file from the entire set. In particular, you now have two ways of accessing the list:
- By looking at a uniformly random element of the list. That is by calling

RANDY() = *a*_{i}*, *where *i *is chosen uniformly at random from 1*, . . . , n*, inclusive*.*Observe that you only receive the file ID, not the index of the file.

To facilitate analyzing this setting, think of the files as being organized in the form of a *circular sorted linked list *where every file points to the one with the next higher ID.By asking Randy to give you the file directly following one he returned to you in some previous call. For example if you first call RANDY() and get back *a** _{i}* you are allowed to call NEXT(

*a*

*) and get back*

_{i}*a*

_{i}_{+1}. Note that the list wraps around, so that NEXT(

*a*

*) returns*

_{n}*a*

_{1}. If you haven’t already obtained

*a*

*in some previous call you may not call NEXT(*

_{i}*a*

*).*

_{i}- As a warm, let us analyze the following setting. You are given a circle of unit circumference. You pick
*k*points on the circle independently and uniformly at random and snip the circle at those points, obtaining*k*different arcs. Determine the expected length of any single

*(Hint: Note that the length of each arc is identically distributed, so each has the same expectation. What is the sum of their expectations?)*

- Develop a randomized algorithm for finding the file with ID
*x*that makes at most*O*(*√**n*) calls to the

functions NEXT() and RANDY() in expectation and always returns the correct answer. Analyze the running time of the algorithm. A proof of correctness is not necessary.

*(Hint: Your algorithm will perform some random accesses and some amount of linear search. Use part*

*to analyze the number of steps in the linear search)*

**程序代写代做C/C++/JAVA/安卓/PYTHON/留学生/PHP/APP开发/MATLAB**

本网站支持淘宝 支付宝 微信支付 paypal等等交易。如果不放心可以用淘宝交易！

**E-mail:** [email protected] **微信:**dmxyzl003

如果您使用手机请先保存二维码，微信识别。如果用电脑，直接掏出手机果断扫描。

**程序代写代做C/C++/JAVA/安卓/PYTHON/留学生/PHP/APP开发/MATLAB**

本网站支持淘宝 支付宝 微信支付 paypal等等交易。如果不放心可以用淘宝交易！

**E-mail:** [email protected] **微信:**dmxyzl003

如果您使用手机请先保存二维码，微信识别。如果用电脑，直接掏出手机果断扫描。