Как найти кратчайшее расстояние между ребрами

2.1. Содержание эпюра:

Дано:
Координаты вершин пирамиды SABC.

Требуется:

задача
1
– определить
натуральную величину основания пирамиды
АВС.

задача
2
– определить
расстояние от вершины пирамиды S
до плоскости ее основания АВС.

задача
3
– найти
кратчайшее расстояние между ребрами
пирамиды SА
и ВС.

задача
4
– определить
величину двугранного угла при ребре
пирамиды АВ.

Рекомендации
по выполнению эпюра:

  1. Чертеж
    должен быть выполнен в соответствии с
    ГОСТми: 2.301 – 68*
    (Форматы), 2.302 – 68*
    (Масштабы), 2.303 – 68*
    (Линии), 2.304 – 81 (Шрифты) (приложение 4);

2. После выполнения
чертежа выполнить его обводку (возможно
оформление в цвете):

  • исходный чертеж
    (цвет черный) и результат построений
    (цвет красный) выполнить сплошными
    основными толстыми линиями;

  • промежуточные
    построения (цвет синий) – сплошными
    тонкими;

  • невидимые линии
    – штриховой.

Указания
к выполнению эпюра:

1.
Студенты факультета МСХ выполняют
задачи 1 – 4 на двух форматах А3. Задачи
1, 2 совместить на первом листе эпюра,
задачи 3, 4 – на втором. Студенты факультета
ПГС выполняют задачи 1 – 3 на двух форматах
А3.

2.
Данные для выполнения эпюра взять из
таблицы 2 в соответствии с вариантом.
Координаты точек даны в миллиметрах.
Все задания выполнить в масштабе 1:1.
Основная надпись выбирается в соответствии
с факультетом из приложения 3.

Задачи
эпюра должны быть решены следующими
способами:

– плоскопараллельное
перемещение (задача 2);

– вращение
вокруг горизонтали или фронтали (задача
1);

– замена
плоскостей проекций (задачи 3, 4).

Примечание:
при решении задач 3 и 4 расстояния
переносимые из одной плоскости в другую
отмечать засечками или другими знаками
(рисунки 2.8, 2.9).

Внимание!
Не разрешается все задачи решать одним
способом.

2.2. Порядок выполнения эпюра

Задача
1
(рисунки
2.1, 2.2, 2.3, 2.4)

Для решения задачи 1 необходимо
преобразовать чертеж так, чтобы основание
пирамиды (треугольник {АВС}), представляющее
собой плоскость общего положения, в
результате вращения оказалось параллельным
одной из плоскостей проекций.

За
ось вращения принимаем горизонталь СL
2L2,
С1L1).
Каждая точка треугольника {АВС},
вращаясь вокруг горизонтали СL, будет
описывать дугу окружности в плоскости,
перпендикулярной к этой горизонтали,
а следовательно, и к плоскости П1.

Окружности,
которые описывают вершины А и В
треугольника АВС, находясь в горизонтально
– проецирующих плоскостях Q
и S,
спроецируются на плоскость П1
в виде прямых, совмещенных со следами
Q1
и S1
плоскостей Q и S.

Центры
вращения точек А и В будут лежать на
оси вращения (горизонтали CL). Для вершины
А– точка О ( О12
), для вершины В – точка О´( О1´,О2´
).

Когда
плоскость треугольника АВС будет
параллельна плоскости П1,
горизонтальная проекция каждой из
перемещающихся вершин окажется удаленной
от оси вращения (горизонтали СL)
на расстояние, равное радиусу вращения
данной точки.

Порядок
построения:

  1. По
    координатам точек А, В, С строим проекции
    треугольника {АВС};

  2. В
    плоскости треугольника {АВС}
    проводим
    горизонталь СL
    2L2,
    С1L1)
    являющуюся осью вращения треугольника
    {АВС} (
    рисунок 2.1 );

  3. Из
    горизонтальных проекций вершин А и В
    проводим прямые, перпендикулярные
    горизонтали СL,
    по которым будут перемещаться
    горизонтальные проекции вращающихся
    точек ( рисунок 2.2);

  4. Отмечаем
    проекции центров вращения вершин
    треугольника. Для вершины А–точка О
    ( О12
    ), для вершины В – точка О´( О1´,О2´
    ). Радиус вращения вершины А – [АО]
    ([А1О1],
    2О2]),
    радиус вращения вершины В – [ВО’]
    ([В1О1‘],
    2О2‘]);

  5. По
    двум проекциям определяем натуральную
    величину RА
    радиуса вращения вершины А (рисунок
    2.3). Натуральная величина RА
    определяется способом вращения отрезка
    [АО] вокруг оси , проходящей через точку
    О перпендикулярно плоскости П2;

  6. Отрезок
    RА
    откладываем от точки О1
    вдоль прямой, по которой
    перемещается горизонтальная проекция
    вершины А1.
    Получим точку А1”;

  7. Через
    полученную точку В1
    и точку L1
    проводим прямую до пересечения с прямой,
    по которой перемещается горизонтальная
    проекция вершины В;

  8. Получим
    точку В1
    ( рисунок 2.4);

  9. Соединяя
    найденные точки А1
    и В1
    с вершиной С1
    , получаем новую горизонтальную проекцию
    треугольника {А1”В1‘С1}.
    Эта проекция определяет натуральную
    величину плоскости треугольника {АВС}.

Задача
2
(рисунки
2.5, 2.6)

Для
решения задачи 2 необходимо преобразовать
чертеж так, чтобы основание пирамиды –
треугольник {АВС},
представляющий собой плоскость общего
положения, в результате перемещения
оказалось перпендикулярным плоскости
П2
(плоскости П1),
т.е. стало фронтально – проецирующей
плоскостью (горизонтально – проецирующей
плоскостью).

Порядок построения:

  1. По
    координатам точек S,
    A,
    B,
    C
    строим проекции основания пирамиды
    треугольника {АВС}
    и ее вершину
    точки S;

  2. В
    плоскости треугольника {АВС}
    проводим
    горизонталь ВД (В1Д1,
    В2Д2)
    (рисунок 2.5);

  3. По
    координатам точек S,
    A,
    B,
    C
    строим проекции основания пирамиды
    треугольника {АВС}
    и ее вершину
    точки S;

  4. В
    плоскости треугольника {АВС}
    проводим
    горизонталь ВД (В1Д1,
    В2Д2)
    (рисунок 2.5);

  5. Переместим
    треугольник {АВС}
    так, чтобы
    горизонтальная проекция В1Д1
    горизонтали
    заняла положение перпендикулярное оси
    Х, а фронтальная проекция треугольника
    2В2С2}
    превратилась
    в прямую линию, т.е. треугольник {АВС}
    станет
    фронтально – проецирующей плоскостью;

  6. Найдем
    новое положение точки S
    (при помощи засечек);

  7. Перпендикуляр
    из точки S
    к фронтально проецирующей плоскости
    будет искомым расстоянием (рисунок
    2.6);

  8. Покажем
    перпендикуляр [SК]
    в исходных проекциях;

  9. Определить
    видимость перпендикуляра [SK].

Примечание:
задачу можно решать, преобразовав
треугольник АВС в горизонтально –
проецирующую плоскость, тогда в плоскости
треугольника необходимо построить
фронталь.

Задача
3
(рисунки
2.7, 2.8, 2.9)

Если
одна из заданных прямых является
проецирующей прямой, то кратчайшее
расстояние между такими прямыми
измеряется длиной перпендикуляра [MN],
общего к заданным прямым. В этом случае
перпендикуляр [MN] будет параллелен одной
из плоскостей проекций и равен длине
его проекции на эту плоскость.

Для
решения данной задачи необходимо одну
из прямых общего положения (SA)
или (BC)
преобразовать в прямую проецирующую,
применив две замены плоскостей проекций.

Порядок
построения:

  1. По
    координатам точек S,
    A,
    B,
    C
    построить проекции ребра пирамиды
    SA
    и проекцию стороны основания BC
    (рисунок 2.7);

  2. При
    первой замене чертеж преобразуем так,
    чтобы прямая общего положения
    (ВС) оказалась параллельной одной из
    плоскостей проекций, для этого вводим
    новую плоскость П4,
    перпендикулярную плоскости П1
    и параллельную отрезку [ВС]. Ось Х1
    проведем параллельно [В1С1].
    Измеряя расстояния от оси х до точек
    А2,
    S2,
    В2
    и С2
    и откладывая их в плоскости П4
    от оси х1,
    получаем проекции [S4A4]
    и [В4C4]
    прямых (SA)
    и (ВС) (рисунок 2.8);

  3. При
    второй замене чертеж преобразуем так,
    чтобы отрезок прямой [ВС], параллельный
    в системе П41
    плоскости П4,
    стал перпендикулярен плоскости П5
    в системе П45
    (рисунок 2.9);

  4. Вводим
    новую плоскость П5,
    перпендикулярно плоскости П4
    и отрезку [ВС], т.е. ось Х2
    пройдет перпендикулярно [В4С4].
    Измерив расстояния от оси Х1
    до точек А1,
    S1,
    В1,
    С1
    и отложить их в плоскости П5
    от оси Х2
    на соответствующих линиях связи, получим
    проекции [В5С5]
    и [S5А5];

  5. Находим
    кратчайшее расстояние [МN]
    между прямыми (SА)
    и (ВС). Кратчайшим расстоянием будет
    являться перпендикуляр, опущенный из
    точки В55
    на проекцию [S5А5];

  6. По
    линиям связи находим проекции кратчайшего
    расстояния между прямыми (SА)
    и (ВС) в исходных проекциях.

Примечание:
данную задачу
можно решить, используя только одну
замену плоскостей проекций, если одна
из данных прямых (AS)
или (BC)
является прямой уровня.

Задача
4

Если
двугранный угол образован проецирующими
плоскостями и ребро АВ двугранного угла
перпендикулярно этой плоскости, то
двугранный угол спроецируется в
натуральную величину.

Для
решения данной задачи необходимо ребро
АВ (прямую общего положения) преобразовать
в проецирующую прямую, применив две
замены плоскостей проекций.

Порядок
построения:

  1. По
    координатам точек S,
    А, В, С строим проекции двугранного
    угла;

  2. При
    первой замене чертеж преобразуем так,
    чтобы ребро АВ двугранного угла оказалось
    параллельным одной из плоскостей
    проекций, т.е. вводим новую плоскость
    П4,
    перпендикулярно плоскости П2
    и параллельно ребру АВ; ось Х1
    пройдет параллельно [А1В1]
    (рисунок 2.11);

  3. По
    линиям связи, перпендикулярным оси Х1,
    двугранный угол проецируем на плоскость
    П4.
    Получаем проекцию S4А4В4С4
    двугранного угла SАВС.

  4. При
    второй замене чертеж преобразуем так,
    чтобы ребро АВ стало перпендикулярно
    новой плоскости П5;

  5. Вводим
    новую плоскость П5
    перпендикулярно плоскости П4
    и ребру АВ, т.е. ось Х2
    пойдет перпендикулярно А4В4.
    По линиям связи, перпендикулярным оси
    Х2,
    проецируем двугранный угол SАВС
    на плоскость П5.
    Получаем проекцию двугранного угла на
    плоскости П5;

  6. Натуральной
    величиной двугранного угла будет угол
    α, между проекциями сторон двугранного
    угла [А55
    S5]
    и [А55
    С5].

Примечание:
если ребро
АВ двугранного угла является прямой
уровня, то задача решается с помощью
одной замены плоскостей проекций.

Таблица
2 – Индивидуальные
задания к эпюру 2.

вар.

Точки

Координаты

вар.

Точки

Координаты

х

у

z

х

у

z

1

S

А

В

С

65

45

5

70

65

5

45

15

50

55

10

0

11

S

А

В

С

20

10

55

80

50

20

50

0

45

10

10

60

2

S

А

В

С

35

65

0

10

60

0

50

10

5

20

60

0

12

S

А

В

С

65

75

5

55

0

20

10

50

40

0

15

30

3

S

А

В

С

55

35

5

60

10

65

25

30

50

35

10

5

13

S

А

В

С

65

45

5

70

50

55

10

0

65

5

45

15

4

S

А

В

С

10

80

45

0

0

20

0

45

15

10

70

40

14

S

А

В

С

35

65

0

10

5

20

60

0

60

0

50

10

5

S

А

В

С

70

40

0

65

65

5

50

20

35

55

10

0

15

S

А

В

С

55

35

5

60

50

35

10

5

10

60

25

30

6

S

А

В

С

70

75

35

10

50

15

0

45

5

50

0

20

16

S

А

В

С

10

80

45

0

15

10

70

40

0

20

0

45

7

S

А

В

С

60

75

30

10

45

25

15

50

55

0

50

20

17

S

А

В

С

70

40

0

65

55

55

10

0

65

5

50

20

8

S

А

В

С

75

45

0

60

25

20

10

65

10

60

20

20

18

S

А

В

С

70

75

35

10

5

50

0

20

50

15

0

45

9

S

А

В

С

75

60

45

5

25

65

10

10

20

20

60

20

19

S

А

В

С

60

75

30

10

55

0

50

20

45

25

15

50

10

S

А

В

С

60

45

0

60

10

15

5

60

20

55

25

10

20

S

А

В

С

75

45

0

60

25

60

20

30

20

20

10

65

Продолжение
таблицы 2

1

2

3

4

5

6

х

у

z

х

у

z

21

S

А

В

С

75

60

45

5

10

20

60

20

25

65

10

10

31

S

А

В

С

60

40

0

65

65

5

45

15

50

55

10

0

22

S

А

В

С

60

45

0

60

20

55

25

10

10

15

5

60

32

S

А

В

С

70

40

0

55

25

20

10

65

10

60

20

20

23

S

А

В

С

20

10

55

80

45

10

10

60

50

20

50

0

33

S

А

В

С

70

55

40

0

25

65

10

10

20

20

60

20

24

S

А

В

С

65

75

5

55

45

0

15

30

0

20

10

50

34

S

А

В

С

55

40

0

55

10

15

5

60

20

55

25

10

25

S

А

В

С

60

40

0

65

65

5

45

15

50

55

10

0

35

S

А

В

С

15

5

50

75

50

20

50

0

45

10

10

60

26

S

А

В

С

30

60

0

5

60

0

50

10

5

20

60

0

36

S

А

В

С

60

70

0

50

0

20

10

50

40

0

15

30

27

S

А

В

С

50

30

0

55

10

60

25

30

50

35

10

5

37

S

А

В

С

60

40

0

65

55

40

0

55

65

5

45

15

28

S

А

В

С

5

75

40

0

0

20

0

45

15

10

70

40

38

S

А

В

С

30

60

0

5

5

20

60

0

60

0

50

10

29

S

А

В

С

65

35

0

60

65

5

50

20

35

55

10

0

39

S

А

В

С

50

30

0

55

50

35

10

5

10

60

25

30

30

S

А

В

С

65

70

30

5

50

15

0

45

5

50

0

20

40

S

А

В

С

5

75

40

0

15

10

70

40

0

20

0

45

Продолжение таблицы
2

1

2

3

4

5

6

х

у

z

х

у

z

41

S

А

В

С

65

35

0

60

55

55

10

0

65

5

50

20

51

S

А

В

С

50

35

5

60

10

60

25

30

50

35

10

5

42

S

А

В

С

65

70

30

5

5

50

0

20

50

15

0

45

52

S

А

В

С

5

80

45

0

0

15

0

40

15

10

70

40

43

S

А

В

С

55

70

25

5

55

0

50

20

45

25

15

50

53

S

А

В

С

65

40

0

65

60

0

45

15

35

55

10

0

44

S

А

В

С

70

40

0

55

25

60

20

30

20

20

10

65

54

S

А

В

С

65

75

35

10

45

10

0

40

5

50

0

20

45

S

А

В

С

70

55

40

5

10

20

60

20

25

65

10

10

55

S

А

В

С

5

70

25

10

40

20

10

45

55

0

50

20

46

S

А

В

С

55

40

0

55

20

55

25

10

10

15

5

60

56

S

А

В

С

70

45

0

60

20

15

5

60

10

60

20

20

47

S

А

В

С

15

5

50

75

45

10

10

60

50

20

50

0

57

S

А

В

С

70

60

45

5

20

60

5

5

20

20

60

20

48

S

А

В

С

60

70

0

50

45

0

15

30

0

20

10

50

58

S

А

В

С

55

45

0

60

5

10

0

55

20

55

25

10

49

S

А

В

С

60

45

5

70

60

0

40

10

50

55

10

0

59

S

А

В

С

15

10

55

80

45

15

45

0

45

10

10

60

50

S

А

В

С

30

65

0

10

55

0

45

5

5

20

60

0

60

S

А

В

С

60

45

5

70

45

50

5

0

65

5

45

15

Продолжение
таблицы 2

1

2

3

4

5

6

х

у

z

х

у

z

61

S

А

В

С

30

65

0

10

0

15

55

0

60

0

50

10

64

S

А

В

С

65

40

0

65

50

50

5

0

65

5

50

20

62

S

А

В

С

50

35

5

60

45

30

5

5

10

60

25

30

65

S

А

В

С

65

75

35

10

0

45

0

15

50

15

0

45

63

S

А

В

С

5

80

45

0

10

5

65

35

0

20

0

45

66

S

А

В

С

55

75

30

10

50

0

45

15

45

25

15

50

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

Часто для приведения прямой, плоской фигуры или пространственной
формы в то частное положение, которое требуется для решения задачи, приходится
заменять обе плоскости проекций. Переход от заданной системы плоскостей V/H
к новой V1/H1 может быть осуществлен по одной из
приведенных ниже схем:

V/H → V1/H → V1/H1 или V/H → V/H1 → V1/H1.

На рисунке 12 задана точка A в системе V/H. Затем
осуществлен переход от системы V/H к системе V1/H1:
проведена новая ось проекций Х1, найдена новая проекция а’1
точки А. Далее система V1/H заменена новой
системой плоскостей проекции V1/H1вместо
горизонтальной плоскости проекций введена новая плоскость Н1.

Рисунок 12

Положение
новых осей проекций выбирается в соответствии с конкретными условиями задачи.

Рассмотрим
примеры.

Пример 6. Определить
истинную фигуру треугольника ABC (рисунок 13).

Рисунок 13

Треугольник
спроектируется в натуральную величину на какую-либо плоскость проекций, если он
окажется параллельным этой плоскости. Для того чтобы треугольник АВС оказался
параллельным одной из плоскостей проекций, необходимо выполнить двойную замену
плоскостей.

Сначала заменим
плоскость V на плоскость V1. Плоскость V1 выберем перпендикулярно плоскости
треугольника АВС — новая ось проекций x1должна быть перпендикулярна горизонтальной проекции горизонтали h. На новую фронтальную плоскость проекций
треугольник cпроектируетcя в виде прямой линии c’1a’1b’1.
Затем введем новую плоскость проекций H1 параллельно
плоскости треугольника.

Горизонтальная
проекция a1b1c1 треугольника ABC в
новой системе — истинная величина его.

Пример 7. Дана пирамида SАВС (рисунок 14). Определить величину
двугранного угла при ребре АВ.

Задача
сводится к построению проекции данного угла на плоскость проекций,
перпендикулярную к его ребру.

Рисунок 14

Так
как ребро АВ — прямая общего положения, то необходимо произвести две
последовательные замены плоскостей проекций. Плоскость V заменяем
плоскостью V1, параллельной отрезку АВ.

Находим
новую фронтальную проекцию s’1a’1b’1c’1
пирамиды SАВС на новой фронтальной плоскости проекций. Затем от
системы V1/H перейдем к системе V1/H1. Плоскость H1
расположим перпендикулярно отрезку АВ. На плоскость Н1  ребро
АВ спроектируется в точку, а грани SАВ и САВ — в прямые.
Угол s1a1c1 будет искомым.

Пример 8. Дана пирамида SАВС (рисунок 15).
Определить кратчайшее расстояние между ребрами и ВС.

Рисунок 15

Прямые
и ВС являются скрещивающимися. Следовательно, задача сводится к
определению кратчайшего расстояния между двумя скрещивающимися прямыми. Для
решения задачи необходимо произвести такую замену плоскостей проекций, чтобы в
новой системе одна из прямых, например ВС (рисунок 16), оказалась
перпендикулярной к какой-либо плоскости проекций. Замену плоскостей проекций
осуществляем по схеме V/H → V/H1 → V1/H1.

Следовательно, решение задач методами преобразования
сводится к выполнению четырех основных этапов:

1) преобразование прямой общего положения в прямую
уровня (определение углов наклона прямой к плоскостям проекций и натуральной
величины отрезков);

2. преобразование прямой уровня в проецирующую прямую
(определение величины двугранного угла, расстояния между прямыми);

3. преобразование плоскости общего положения в
проецирующую плоскость (определение углов наклона плоскости к плоскостям
проекций, расстояния от точки до плоскости);

4. преобразование плоскости проецирующей в плоскость
уровня (определяется натуральная величина плоскости).

Рисунок 16

В системе V1H1 прямая ВС
(см. рисунок 15) проектируется в точку. Отрезок k’1l’1
кратчайшее расстояние между ребрами АS и ВС. Для построения
проекций кратчайшего расстояния в системе V/H находим по линии связи
точку l1 и проводим l1k1 параллельно
оси проекций Х2 , после чего при помощи линий связи
находим основные проекции kl и k’l’.

СПОСОБЫ ВРАЩЕНИЯ

Сущность способов вращения заключается в том, что
заданная геометрическая форма путем вращения вокруг некоторой оси перемещается
в пространстве до тех пор, пока она не займет частное положение по отношению к
неизменной системе плоскостей проекций.

В зависимости от положения оси вращения по отношению к
плоскостям проекций различают следующие способы вращения:

а) вращение вокруг осей, перпендикулярных
к плоскостям проекций;

б) то же без указания положения осей
вращения;

в) вращение вокруг горизонтали или
фронтали;

г) вращение вокруг одного из следов
плоскости (совмещение).

Рисунок 17                                     Рисунок
18

На
эпюре (рисунок 17) изображена точка А и ось вращения Z, перпендикулярная
к плоскости проекций H. При вращении вокруг оси Z точка А будет
перемещаться по окружности, лежащей в плоскости, перпендикулярной оси вращения
(параллельной плоскости проекций H). Если точку А переместить из
положения А в положение A1 т. е. повернуть ее вокруг
оси Z, на некоторый угол α , то ее горизонтальная проекция (а)
займет положение a1, описав при этом дугу радиуса za (za
радиус вращения), а фронтальная проекция (а’) точки переместится
по прямой a’a’1, параллельной оси X.

Если
ось вращения Z (рисунок 18) перпендикулярна к плоскости проекций V, то
при вращении точки В вокруг этой оси фронтальная проекция траектории её
перемещения будет окружностью, а горизонтальная — прямой, параллельной оси X.

Рассмотрим
пример.

Пример 9. Совместить
точку А с плоскостью Р путем вращения ее вокруг заданной оси Z
(рисунок 19).

Рисунок 19

При
вращении вокруг оси Z, точка А опишет окружность в плоскости Q,
перпендикулярной этой оси. Плоскость Q пересечет заданную плоскость Р
по горизонтали NF. Очевидно, точка А окажется в плоскости Р
тогда, когда окружность, описываемая точкой А, пересечет горизонталь NF.
Задача, как видно из чертежа, имеет два решения.

Чтобы повернуть прямую АВ (рисунок 20) на некоторый угол α,
достаточно повернуть на заданный угол две принадлежащие, ей точки. Из чертежа
видно, что треугольники abz и a1b1z1
равны между собой (по двум сторонам и углу между ними), а из их равенства
следует, что ab = a1b1, т. е. величина
горизонтальной проекции отрезка при вращении его вокруг оси, перпендикулярной Н,
не изменяется, изменяется только ее положение относительно оси проекций.
Это обстоятельство позволяет упростить построения при решении приведенного
примера

Рисунок 20                                                    Рисунок
21

На рисунке 21 для поворота прямой АВ вокруг оси Z на
угол α из z, опущен перпендикуляр на ab. Затем точка с повернута
на заданный угол α, через точку c1 проведена прямая,
перпендикулярная радиусу c1z, и отложены отрезки c1a1=са
и c1b1=cb.

Вращение
плоскости вокруг оси, перпендикулярной плоскости проекций, осуществляется путем
вращения на один и тот же угол в одном и том же направлении точек и прямых,
которыми задана плоскость.

На
рисунке 22 плоскость, заданная треугольником АВС, повернута вокруг оси Z.
в положение, перпендикулярное фронтальной плоскости проекций
(горизонтальная проекция горизонтали А1 заняла положение,
перпендикулярное оси X).

Рисунок 22

Если же плоскость задана следами, то для поворота плоскости на
некоторый угол необходимо повернуть на заданный угол один из ее следов и
горизонталь или фронталь этой плоскости (рисунок 23).

Рисунок 23

Таким
образом, при вращении любой пространственной формы около оси, перпендикулярной
одной из плоскостей проекций, проекция ее на эту плоскость по своей величине не
изменится. Изменится лишь положение этой проекции относительно оси проекций.
Пользуясь этим, для решения той или иной задачи можно применять способ
вращения, не изображая на чертеже осей вращения.

Сайт переезжает. Большинство статей уже перенесено на новую версию.
Скоро добавим автоматические переходы, но пока обновленную версию этой статьи можно найти там.

Кратчайшие пути в графе

Рассмотрим взвешенный граф, то есть у всех его ребер есть вес – некоторое число. Можно представить, что это цена, за которую мы можем по нему проехать.

Как его хранить? Давайте просто в списке смежности вместо номеров вершин соседа хранить пару (номер соседа, вес ребра до него).

Давайте решать задачу посика кратчайшего пути в графе – мы хотим за наименьшую стоимость проехать из вершины (A) в (B).

Обычно будем считать, что в графе нет циклов отрицательного веса – иначе кратчайшее расстояниие может быть равно минус бесконечности.

Для данной задачи есть несколько алгоритмов решения.

Алгоритм Флойда

Мы с вами уже знаем динамическое программирование, давайте рассмотри следующую динамику:

(d_{i j}^k) – это длина кратчайшего пути от вершины (i) до (j), используя как промежуточные только вершины из первых (k) = (d_{i j}^k) (напоминает рюкзак).

База динамики ((k = 0)) определяется только путями из одного ребра. Если есть ребро из (i) в (j) стоимостью (c), то (d_{i j}^{0}) = (c). Если таких ребер несколько, то, конечно, надо взять минимум.

Если мы хотим посчитать (d_{i j}^{k}), то у нас есть два варианта

  1. Не брать на пути нигде (k)-ую вершину, тогда (d_{i j}^{k}) = (d_{i j}^{k – 1})

  2. Взять где-нибудь в пути k-ую вершину, тогда путь разбивается на две части – от (i) до (k) и от (k) до (j), раз итоговый путь кратчайший, то и и эти два пути должны быть кратчайшми, а значит формула (d_{i j}^{k}) = (d_{i k}^{k – 1}) + (d_{k j}^{k – 1})

В результате ответ – (d_{A B}^{n}),

Можете подумать, как по такой динамике восстановить сам путь.

Также заметим, что вместо трехмерной динамики в этом алгоритме можно использовать двухмерную, храня в (dp_{ij}) последнее известное значение из (dp_{ij}^0), (dp_{ij}^1) (dp_{ij}^2), (ldots), (dp_{ij}^n).

for(int k = 0; k < n; k++){
    for(int i = 0; i < n; i++){
        for(int j = 0; j < n; j++){
            a[i][j] = min(a[i][j], a[i][k] + a[k][j]);
        }
    }
}

Теоретическое задание

Подумайте, как находить циклы отрицательного веса с помощью Флойда.

Плюсы алгоритма в том, что он находит расстояние сразу от всех вершин графа до остальных, а минус – алгоритм работает за (O(N^3));

Практическое задание

Первые две задачи на алгоритм Флойда.

Алгоритм Дейкстры

Для этого алгоритма придется рассматривать только графы без отрицательных рёбер.

Алгоритм Дейкстры решает немного другую задачу: он находит расстояние от одной вершины (A) до каждой вершины. Давайте для каждой вершины хранить расстояние до нее из вершины (A) в массиве (d). Например: * (d[A] = 0) * (d[x] = infty), если x не достижима из A

Назовем релаксацией обновление ответа для вершины (b) через ребро ((a, b, c)) таким способом: (d[b] = min(d[b], d[a] + c)).

  • При таком действии ответ не может стать лучше, чем кратчайшее расстояние до (b), так как мы просто пользуемся путем для вершины (a) и продлеваем его в (b).
  • Если мы прорелаксировали все ребра в кратчайшем пути в правильном порядке до вершины (b), то мы получим кратчайший путь до (b).

Теперь давайте каждый раз доставать вершину, для которой расстояние от А сейчас минимально, и мы еще ее не смотрели и затем обновлять всех ее соседей. Допустим вершина с минимальным расстоянием – x, тогда надо прорелаксировать все ребра из нее.

Давайте докажем корректность алгоритма по индукции:

База) Первой вершиной мы всегда рассмотрим (A), но для нее верно, что расстояние от (А) до (А) = 0;

Шаг) Мы достали вершину (i), нам известно, что для всех ее предков ответ – корректен, но тогда, допустим, что для (i)-ой вершины мы нашли ответ больший, чем надо, тогда это значит, что мы должны прийти из еще не рассмотренной вершины, но так как ребер отрицательного веса в графе нет, то такое невозможно (Rightarrow) мы доказали

https://visualgo.net/en/sssp?slide=1

Есть две возможные реализации алгоритма

  1. реализация помощью нахождения минимального расстояния внутри массива за линию. Так как мы для каждого шага находим минимальную вершину, то мы сделаем не более (N) шагов, но при этом на каждом шаге мы находим минимум за линию, то есть алгоритм работает за (O(N^2)).
for (int i = 0; i < n; ++i){
    int uk = -1;
    for (int j = 0; j < n; j++){
        if ((mark[j] == 0) && ((uk == -1) || (d[j] < d[uk]))){
                uk = j;
        }
    }
    for (int j = 0; j < n; j++){
        if ((j != uk) && (g[uk][j] != -1)) d[j] = min(d[j], g[uk][j] + d[uk]);
    }
    mark[uk] = 1;
}
  1. Реализация за (O(MlognN + NlogN)) с помощью нахождения минимального расстояния внутри кучи/сета за логарифм. Так как для каждой вершины мы сделаем не более одного извлекания из структуры + каждое ребро мы используем максимум два раза. Для этого давайте в выбранной структуре хранить пару (расстояние, вершина); Первый код реализован с set, второй с кучей. Так как в куче нет компаратора на возрастание, то надо либо сделать свой, либо домножить расстояние на -1;
while (used.size()) {
    int v = (*(used.begin())).second;
    for (int i = 0; i < g[v].size(); i++) {
        int to = g[v][i].first, c = g[v][i].second;
        if (dist[v] + c < dist[to]) {
            used.erase({dist[to], to});
            dist[to] = dist[v] + to;
            used.insert({dist[to], to});
        }
    }
    used.erase({dist[v], v});
}
while (!q.empty()) {
        int v = q.top().second;
        q.pop();
    for (int j = 0; j < g[v].size(); ++j) {
        int to = g[v][j].first, c = g[v][j].second;
        if (d[v] + c < d[to]) {
            d[to] = d[v] + c;
            q.push({-d[to], to});
        }
    }
}

Из асимптотики понятно, что при большом количестве ребер первый алгоритм писать лучше, иначе второй.

Теоретическое задание

Приведите примеры, когда каждый из алгоритмов работает лучше.

Недостаток алгоритма Дейкстры всего один – он не работает, если в графе есть ребра отрицательного веса.

Практическое задание

3-5 Задача на алгоритм Дейкстры.

Форд-Беллман

Этот алгоритм решает ту же задачу, что и Дейкстра, но зато может работать с отрицательными ребрами!

Давайте заведем массив расстояний, как и в дейкстре, для стартовой вершины расстояние = 0. Алгоритм состоит в релаксации каждого ребра в графе (N-1) раз.

Это работает потому, что в кратчайшем пути не больше, чем (N-1) ребро, и если мы прорелаксируем их в таком порядке, этот путь найдется. После (N-1) прохода по всем ребрам и их релаксации мы точно это сделаем и найдем кратчайший путь.

Также в этом случае удобнее хранить список ребер явно вместо списка смежности.

int from[m], to[m], cost[m];
for (int i = 0; i < n - 1; ++i) {
        for (int j = 0; j < m; ++j) {
                d[to[j]] = min(d[to[j]], d[from[j]] + cost[j]);
    }
}

Теоретическое задание

Подумайте, как найти цикл отрицательного веса с помощью этого алгоритма.

Практическое задание

Решите задачи 6 и 7.

Ссылка на контест

https://informatics.msk.ru/mod/statements/view.php?id=33380#1

Добавить комментарий