Node:BRS, Next:brute force, Previous:browser, Up:= B =

BRS /B-R-S/ n.

Syn. Big Red Switch.

This abbreviation is fairly common on-line.

Node:brute force, Next:brute force and

ignorance, Previous:BRS,

Up:= B =

brute force adj.

Describes a primitive programming style, one in which the

programmer relies on the computer's processing power instead of

using his or her own intelligence to simplify the problem, often

ignoring problems of scale and applying naive methods suited to

small problems directly to large ones. The term can also be used

in reference to programming style: brute-force programs are

written in a heavyhanded, tedious way, full of repetition and

devoid of any elegance or useful abstraction (see also brute force and

ignorance).

The canonical example of a

brute-force algorithm is associated with the `traveling salesman

problem' (TSP), a classical NP-hard

problem: Suppose a person is in, say, Boston, and wishes to drive

to N other cities. In what order should the cities be visited in

order to minimize the distance travelled? The brute-force method

is to simply generate all possible routes and compare the

distances; while guaranteed to work and simple to implement, this

algorithm is clearly very stupid in that it considers even

obviously absurd routes (like going from Boston to Houston via

San Francisco and New York, in that order). For very small N it

works well, but it rapidly becomes absurdly inefficient when N

increases (for N = 15, there are already 1,307,674,368,000

possible routes to consider, and for N = 1000 -- well, see bignum). Sometimes, unfortunately, there

is no better general solution than brute force. See also NP-.

A more simple-minded example of brute-force programming is

finding the smallest number in a large list by first using an

existing program to sort the list in ascending order, and then

picking the first number off the front.

Whether brute-force programming should actually be considered

stupid or not depends on the context; if the problem is not

terribly big, the extra CPU time spent on a brute-force solution

may cost less than the programmer time it would take to develop a

more `intelligent' algorithm. Additionally, a more intelligent

algorithm may imply more long-term complexity cost and

bug-chasing than are justified by the speed improvement.

Ken Thompson, co-inventor of Unix, is reported to have uttered

the epigram "When in doubt, use brute force". He probably

intended this as a ha ha

only serious, but the original Unix kernel's preference

for simple, robust, and portable algorithms over brittle `smart' ones does seem to have been a

significant factor in the success of that OS. Like so many other

tradeoffs in software design, the choice between brute force and

complex, finely-tuned cleverness is often a difficult one that

requires both engineering savvy and delicate esthetic

judgment.

Node:brute force and

ignorance, Next:BSD,

Previous:brute force,

Up:= B =

brute force and ignorance n.

A popular design technique at many software houses -- brute force coding unrelieved by

any knowledge of how problems have been previously solved in

elegant ways. Dogmatic adherence to design methodologies tends to

encourage this sort of thing. Characteristic of early larval stage programming;

unfortunately, many never outgrow it. Often abbreviated BFI:

"Gak, they used a bubble

sort! That's strictly from BFI." Compare bogosity.

Node:BSD, Next:BSOD, Previous:brute force and ignorance,

Up:= B =

BSD /B-S-D/ n.

[abbreviation for `Berkeley Software Distribution'] a family

of Unix versions for the DEC VAX and PDP-11

developed by Bill Joy and others at Berzerkeley starting around 1977,

incorporating paged virtual memory, TCP/IP networking

enhancements, and many other features. The BSD versions (4.1,

4.2, and 4.3) and the commercial versions derived from them

(SunOS, ULTRIX, and Mt. Xinu) held the technical lead in the Unix

world until AT&T's successful standardization efforts after

about 1986; descendants including Free/Open/NetBSD, BSD/OS and

MacOS X are still widely popular. Note that BSD versions going

back to 2.9 are often referred to by their version numbers alone,

without the BSD prefix. See 4.2, Unix, USG

Unix.

Node:BSOD, Next:BUAF, Previous:BSD,

Up:= B =

The Jargon File, Version 4.2.2, 20 Aug 2000 · 第 287 / 1941 题