Bisection

In geometry, bisection is the division of something into two equal or congruent parts, usually by a line, which is then called a bisector. The most often considered types of bisectors are the segment bisector (a line that passes through the midpoint of a given segment) and the angle bisector (a line that passes through the apex of an angle, that divides it into two equal angles).

In three-dimensional space, bisection is usually done by a plane, also called the bisector or bisecting plane.

Line segment bisector

A line segment bisector passes through the midpoint of the segment. Particularly important is the perpendicular bisector of a segment, which, according to its name, meets the segment at right angles. The perpendicular bisector of a segment also has the property that each of its points is equidistant from the segment's endpoints. Therefore, Voronoi diagram boundaries consist of segments of such lines or planes.

In classical geometry, the bisection is a simple compass and straightedge, whose possibility depends on the ability to draw circles of equal radii and different centers. The segment is bisected by drawing intersecting circles of equal radius, whose centers are the endpoints of the segment and such that each circle goes through one endpoint. The line determined by the points of intersection of the two circles is the perpendicular bisector of the segment, since it crosses the segment at its center. This construction is in fact used when constructing a line perpendicular to a given line at a given point: drawing an arbitrary circle whose center is that point, it intersects the line in two more points, and the perpendicular to be constructed is the one bisecting the segment defined by these two points.

Bisection (software engineering)

Bisection is a method used in software development to identify change sets that result in a specific behavior change. It is mostly employed for finding the patch that introduced a bug. Another application area is finding the patch that indirectly fixed a bug.

Overview

Code bisection has the goal of minimizing the effort to find a specific change set.

It employs a divide and conquer algorithm that depends on having access to the code history which is usually preserved by revision control in a code repository.

Bisection method

Code bisection algorithm

Code history has the structure of a directed acyclic graph which can be topologically sorted. This makes it possible to use a divide and conquer search algorithm which:

  • splits up the search space of candidate revisions
  • tests for the behavior in question
  • reduces the search space depending on the test result
  • re-iterates the steps above until a range with at most one bisectable patch candidate remains
  • Algorithmic complexity

    Podcasts:

    PLAYLIST TIME:

    Latest News for: bisection

    • 1
    ×