# 数学代写|组合学代写Combinatorics代考|Speed and Cost

#### Doug I. Jones

Lorem ipsum dolor sit amet, cons the all tetur adiscing elit

couryes™为您提供可以保分的包课服务

couryes-lab™ 为您的留学生涯保驾护航 在代写组合学Combinatorics方面已经树立了自己的口碑, 保证靠谱, 高质且原创的统计Statistics代写服务。我们的专家在代写组合学Combinatorics代写方面经验极为丰富，各种代写组合学Combinatorics相关的作业也就用不着说。

• Statistical Inference 统计推断
• Statistical Computing 统计计算
• (Generalized) Linear Models 广义线性模型
• Statistical Machine Learning 统计机器学习
• Longitudinal Data Analysis 纵向数据分析
• Foundations of Data Science 数据科学基础

## 数学代写|组合学代写Combinatorics代考|Recurrences and Generating Functions

In this section we’ll focus on the first two questions that we raised above. Sorting networks achieve speed by three methods: fast comparators, parallelism and pipelining.
The first method is a subject for a course in hardware design, so we’ll ignore it. Parallelism is built into any sorting network; we just haven’t realized that in our discussion yet. Pipelining is a common design technique for speeding up computers.
Two things that will make a network cheaper to manufacture is decreasing the number of comparators it contains and increasing the regularity of the layout. Thus we can ask how many comparators are needed and if they can be arranged in a regular pattern.

All the algorithms we’ve discussed so far have been carried out sequentially; that is, one thing is done at a time. This may not be realistic for algorithms on a supercomputer. It is certainly not realistic for sorting networks because parallelism is implicit in their design. Compare the two networks in Figure 8.3. They both perform the same sorting, but, as is evident from the second picture, some comparators can work at the same time.

In the expanded form on the left side, it is easy to see that the network sorts correctly. The leftmost set of comparators rising to the right finds the first item; the next set, the second item; the next, the third. The rightmost comparator puts the last two items in order. This idea can be extended to obtain a network that will sort $n>1$ items in $2 n-3$ “time units,” where a time unit is the length of time it takes a comparator to operate. Can we improve on this?

A natural idea is to fill in as many comparators as possible, thereby obtaining a brick wall type of pattern as shown in Figure 8.4. How long does the brick wall have to be? It turns out that, for $n$ items, it must have length $n$. Can we do better than a brick wall if the comparators connect two lines which are not adjacent? Yes, we can. Figure 8.4 shows a “Batcher sort,” which is faster than the brick wall. We’ll explain Batcher sorts later. A vertical line spanning several horizontal lines represents a comparator connecting the topmost with the bottommost. To avoid overlapping lines in diagrams, comparators that are separated by a small horizontal distances in a diagram are understood to all be operating at the same time. The brick wall in Figure 8.4 takes 8 time units and the Batcher sort takes 6 .

## 数学代写|组合学代写Combinatorics代考|How Fast Can a Network Be?

Since a network must have at least $\log _2(n !)$ comparators and since at most $n / 2$ comparators can operate at the same time, a network must take at least $\log _2(n !) /(n / 2) \approx 2 \log _2 n$ time units. It is known that for some $C$ and for all large $n$, there exist networks that take no more than $C \log _2 n$ time units. This is too complicated for us to pursue here.

Pipelining is an important method for speeding up a network if many sets of items must be sorted. Suppose that we have a delay unit that delays an item by the length of time it takes a comparator to operate. Insert delay units in the network where there are no comparators so that all the items move through the network together. Once a set of items has passed a position, a new set can enter. Thus we can feed a new set of items into the network each time unit. The first set will emerge from the end some time later and then each successive set will take just one additional time unit to emerge. For example, a brick wall network can sort one set of 1,000 items in 1,000 time units, but 50 sets take only 1,049 time units instead of $1,000 \times 50$. This technique is known as pipelining because the network is thought of as a pipeline through which things are moving.

Pipelining is used extensively in computer design. It is obvious in the “vector processing” hardware of supercomputers, but it appears in some form in many central processing units. For example, the INTEL-8088 microprocessor can roughly be thought of as a two step pipeline: (i) the bus interface unit fetches instructions and (ii) the execution unit executes them. (It’s actually a bit more complicated since the bus interface unit handles all memory read/write.)

How Cheap Can a Network Be?
Our previous suggestion for using a brick wall network to sort 1,000 items could be expensive-it requires 500,000 comparators. This number could be reduced by using a more efficient network; however, we’d probably have to sacrifice our nice regular pattern. There’s another way we can achieve a dramatic saving if we are willing to abandon pipelining.

The brick wall network is simply the first two columns of comparators repeated about $n / 2$ times. We could make a network that consists of just these two columns with the output feeding back in as input. Start the network by feeding in the desired values. After about $n$ time units the sorted items will simply be circulating around in the network and can be read whenever we wish.

If we insist on pipelining, how many comparators are needed? From the exercises in the next section, you will see that a Batcher sorting network requires considerably less time and considerably less comparators than a brick wall network; however, it is not best possible. Unlike software sorting, there is a large gap between theory and practice in sorting nets: Theory provides a lower bound on the number of comparators that are required and specific networks provide an upper bound. There is a large gap between these two numbers. In contrast, the upper and lower bounds for pairwise comparisons in software sorts differ from $n \ln n$ by constant factors of reasonable size.

Whether or not we keep our pipelining capabilities, we face a variety of design tradeoffs in designing a VLSI chip to implement a sorting network. Among the issues are the number of comparators, the distance between the lines a comparator must connect, regularity of the design and delay problems. They are beyond the scope of our text.

# 组合学代考

## 有限元方法代写

tatistics-lab作为专业的留学生服务机构，多年来已为美国、英国、加拿大、澳洲等留学热门地的学生提供专业的学术服务，包括但不限于Essay代写，Assignment代写，Dissertation代写，Report代写，小组作业代写，Proposal代写，Paper代写，Presentation代写，计算机作业代写，论文修改和润色，网课代做，exam代考等等。写作范围涵盖高中，本科，研究生等海外留学全阶段，辐射金融，经济学，会计学，审计学，管理学等全球99%专业科目。写作团队既有专业英语母语作者，也有海外名校硕博留学生，每位写作老师都拥有过硬的语言能力，专业的学科背景和学术写作经验。我们承诺100%原创，100%专业，100%准时，100%满意。

## MATLAB代写

MATLAB 是一种用于技术计算的高性能语言。它将计算、可视化和编程集成在一个易于使用的环境中，其中问题和解决方案以熟悉的数学符号表示。典型用途包括：数学和计算算法开发建模、仿真和原型制作数据分析、探索和可视化科学和工程图形应用程序开发，包括图形用户界面构建MATLAB 是一个交互式系统，其基本数据元素是一个不需要维度的数组。这使您可以解决许多技术计算问题，尤其是那些具有矩阵和向量公式的问题，而只需用 C 或 Fortran 等标量非交互式语言编写程序所需的时间的一小部分。MATLAB 名称代表矩阵实验室。MATLAB 最初的编写目的是提供对由 LINPACK 和 EISPACK 项目开发的矩阵软件的轻松访问，这两个项目共同代表了矩阵计算软件的最新技术。MATLAB 经过多年的发展，得到了许多用户的投入。在大学环境中，它是数学、工程和科学入门和高级课程的标准教学工具。在工业领域，MATLAB 是高效研究、开发和分析的首选工具。MATLAB 具有一系列称为工具箱的特定于应用程序的解决方案。对于大多数 MATLAB 用户来说非常重要，工具箱允许您学习应用专业技术。工具箱是 MATLAB 函数（M 文件）的综合集合，可扩展 MATLAB 环境以解决特定类别的问题。可用工具箱的领域包括信号处理、控制系统、神经网络、模糊逻辑、小波、仿真等。

Days
Hours
Minutes
Seconds

# 15% OFF

## On All Tickets

Don’t hesitate and buy tickets today – All tickets are at a special price until 15.08.2021. Hope to see you there :)