Закрыть

Скобы рычажные методика поверки: Библиотека государственных стандартов

71118-18: СР Скобы рычажные — Производители, поставщики и поверители

Назначение

Скобы рычажные СР (далее по тексту — скобы) предназначены для измерений наружных линейных размеров деталей относительным методом.

Описание

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

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

Скобы выпускаются в следующих модификациях: СР-25, СР-50, СР-75, СР-100, СР-125, СР-150, которые отличаются друг от друга диапазоном измерений, ценой деления, пределами допускаемой абсолютной погрешности измерений, габаритными размерами и массой.

Скобы выпускаются под товарным знаком WOGEEL. Товарный знак наносится на циферблат и на крышку футляра краской или методом лазерной маркировки, на паспорт типографским способом.

Общий вид средств измерений представлен на рисунках 1 -3.

Программное обеспечение

отсутствует.

Технические характеристики

Таблица 1 — Основные метрологические характеристики

Модификация

Диапазон

измерений,

мм

Отсчетное устройство

Измерительное

усилие,

Н

Колебание

измерительного

усилия,

Н, не более

Цена

деления,

мкм

Диапазон показаний, мкм, не менее

СР-25

от 0 до 25

1

от -70 до +70

от 4 до 8

1,5

СР-50

от 25 до 50

1

от -70 до +70

от 6 до 10

2,0

СР-75

от 50 до 75

1

от -70 до +70

от 6 до 10

2,0

СР-100

от 75 до 100

1

от -70 до +70

от 6 до 10

2,0

СР-125

от 100 до 125

2

от -140 до +140

от 6 до 10

2,0

СР-150

от 125 до 150

2

от -140 до +140

от 6 до 10

2,0

Таблица 2 — Пределы допускаемой абсолютной погрешности измерений скоб

Модификация

Пределы допускаемой абсолютной погрешности, мкм, в интервалах шкалы

Размах показаний, не более

±30 делений от нулевого штриха

св. ±30 делений от нулевого штриха

СР-25

±1,0

±2,0

1/3 цены деления

СР-50

±1,0

±2,0

1/3 цены деления

СР-75

±1,0

±2,0

1/3 цены деления

СР-100

±1,0

±2,0

1/3 цены деления

СР-125

±1,5

±2,0

1/3 цены деления

СР-150

±1,5

±2,0

1/3 цены деления

Таблица 3 — Допуски плоскостности и параллельности, параметр шероховатости плоских измерительных поверхностей___

Модификация

Допуск

плоскостности,

мкм

Допуск

параллельности,

мкм

Параметр шероховатости Ra, мкм

СР-25

0,6

1,2

0,04

СР-50

0,6

1,5

0,04

СР-75

0,6

2,0

0,04

СР-100

0,6

2,5

0,04

СР-125

0,6

3,0

0,04

СР-150

0,6

3,5

0,04

Таблица 4 — Основные технические характеристики

Модификация

Габаритные размеры (длинахширинахвысота), мм, не более

Масса, кг, не более

Средний срок службы, лет

СР-25

200x25x80

0,8

3

СР-50

225x25x93

1,2

3

СР-75

250x25x110

1,5

3

СР-100

275x25x132

2,0

3

СР-125

300x25x155

2,4

3

СР-150

325x30x180

3,4

3

Таблица 5 — Условия эксплуатации

Параметр

Значение

Температура окружающего воздуха, °С

от +17 до +23

Относительная влажность, %, не более

80

Знак утверждения типа

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

Комплектность

Таблица 6 — Комплектность средства измерений

Наименование

Обозначение

Количество

Скоба рычажная СР

1 шт.

Футляр

1 шт.

Паспорт

1 экз.

Методика поверки

ОЦСМ 029196-2017 МП

1 экз. в один адрес

Поверка

осуществляется по документу ОЦСМ 029196-2017 МП «ГСИ. Скобы рычажные СР. Методика поверки», утвержденному ФБУ «Омский ЦСМ» 12.12.2017 г.

Основные средства поверки: меры длины концевые плоскопараллельные 4-го разряда по ГОСТ Р 8.763-2011.

Допускается применение аналогичных средств поверки, обеспечивающих определение метрологических характеристик поверяемых СИ с требуемой точностью.

Знак поверки наносится:

—    в паспорт или свидетельство о поверке при первичной поверке;

—    на свидетельство о поверке при периодической поверке.

Сведения о методах измерений

приведены в эксплуатационном документе.

Нормативные документы

ГОСТ Р 8.763-2011 ГСИ. Государственная поверочная схема для средств измерений длины в диапазоне от 110″9 до 50 м и длин волн в диапазоне от 0,2 до 50 мкм Техническая документация фирмы-изготовителя

ГОСТ 11098-75 Скобы с отсчетным устройством. Технические условия


ГОСТ 11098-75

Группа П53

МЕЖГОСУДАРСТВЕННЫЙ СТАНДАРТ

СКОБЫ С ОТСЧЕТНЫМ УСТРОЙСТВОМ

Технические условия

Gauge callipers with reading arrangement. Specifications

ОКП 39 4240

Дата введения 1978-01-01

ИНФОРМАЦИОННЫЕ ДАННЫЕ

1. РАЗРАБОТАН И ВНЕСЕН Министерством станкостроительной и инструментальной промышленности

РАЗРАБОТЧИКИ

А. М.Смогоржевский; А.М.Ильина

2. УТВЕРЖДЕН И ВВЕДЕН В ДЕЙСТВИЕ Постановлением Государственного комитета стандартов Совета Министров СССР от 27.11.75 N 3655

3. ВЗАМЕН ГОСТ 11098-64

4. ССЫЛОЧНЫЕ НОРМАТИВНО-ТЕХНИЧЕСКИЕ ДОКУМЕНТЫ

Обозначение НТД, на который дана ссылка

Номер пункта

ГОСТ 8.001-80

2а.2

ГОСТ 8.359-79

2б.1

ГОСТ 8.383-80

2а.2

ГОСТ 9.032-74

2.19

ГОСТ 9.303-84

2.19

ГОСТ 9.306-85

2.19

ГОСТ 27.410-87

2а.5

ГОСТ 577-68

2.18

ГОСТ 3882-74

2.6

ГОСТ 13762-86

2.24, 3.1

5. Ограничение срока действия снято по протоколу N 4-93 Межгосударственного Совета по стандартизации, метрологии и сертификации (ИУС 4-94)

6. ПЕРЕИЗДАНИЕ (октябрь 1998 г.) с Изменениями N 1, 2, 3, 4, 5, утвержденными в марте 1981 г., январе 1983 г., октябре 1984 г., июле 1987 г., декабре 1990 г. (ИУС 8-81, 5-83, 1-85, 11-87, 4-91)

Настоящий стандарт распространяется на скобы с пределами измерений до 1000 мм, оснащенные отсчетным устройством с ценой деления 0,001, 0,002 и 0,010 мм, предназначенные для линейных измерений, и устанавливает обязательные требования пп.1.2; 2.2; 2.3; 2.5 и 2.18.

Стандарт не распространяется на скобы специального назначения.

(Измененная редакция, Изм. N 3, 4, 5).

1. ТИПЫ, ОСНОВНЫЕ ПАРАМЕТРЫ

1.1. Скобы с отсчетным устройством должны изготовляться трех типов:

СРП — рычажные, повышенной точности, со встроенным в корпус отсчетным устройством (черт.1).

СР — рычажные, со встроенным в корпус отсчетным устройством (черт. 1).


Черт.1

СИ — индикаторные, оснащенные измерительными головками (черт.2).


1 — пятка подвижная; 2 — отсчетное устройство; 3 — корпус; 4 — теплоизоляционная накладка;
5 — упор; 6 — пятка переставная

Черт.2

Примечание. Черт.1 и 2 не определяют конструкцию скоб.

(Измененная редакция, Изм. N 5).

1.2. Основные параметры скоб должны соответствовать указанным в табл.1.

Таблица 1

Размеры, мм

Отсчетное устройство

Тип скоб

Диапазон измерения скоб

Цена деления, не более

Диапазон измерений, не менее

Диапазон перемещения переставной пятки

Количество переставных пяток, шт.

СР

0-25

0,002

±0,14

25

1

25-50

50-75

75-100

100-125

125-150

СИ

0-50

0,01

3

50

1

50-100

100-200

2

200-300

300-400

400-500

500-600

600-700

0,01

5

50

2

700-850

3

850-1000

СРП

0-25

0,001

±0,07

25

1

25-50

Пример условного обозначения рычажной скобы, повышенной точности с диапазоном измерения 25-50 мм:

Скоба СРП 50 ГОСТ 11098-75

То же, рычажной скобы с диапазоном измерения 50-75:

Скоба СР 50 ГОСТ 11098-75*

________________

* Письмом Росстандарта от 24. 12.2021 г. N 4725-ОГ/03 разъясняется, что «в ГОСТ 11098-75 допущена опечатка. Для скобы рычажной СР с диапазоном измерения 50-75 мм должно быть указано: «Скоба СР 75 ГОСТ 11098-75» взамен «Скоба СР 50 ГОСТ 11098-75». — .

То же, индикаторной скобы с диапазоном измерения 0-50 мм:

Скоба СИ 50 ГОСТ 11098-75

(Измененная редакция, Изм. N 2, 5).

1.3. Измерительное усилие скоб и колебание измерительного усилия для одной скобы должны соответствовать указанным в табл.2.

Таблица 2

Верхний предел измерений скоб, мм

Измерительное усилие скоб, сН

Колебание измерительного усилия
для одной скобы, сН, не более

типы

СРП

СР и СИ

До 50

600±100

100

150

Св. 50 » 600

800±200

200

» 600

1000±200

250

(Измененная редакция, Изм. N 5).

2. ТЕХНИЧЕСКИЕ ТРЕБОВАНИЯ

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

(Введен дополнительно, Изм. N 5).

2.1. Скобы должны иметь механизм отвода подвижной пятки.

Скобы с верхним пределом измерения от 50 до 200 мм должны быть снабжены упором.

2.2. Предел допускаемой погрешности скобы в любом рабочем положении при температуре окружающей среды (20±3)°С должен соответствовать значениям, указанным в табл.3.

Таблица 3

Тип скоб

Диапазон измерений скоб, мм

Предел допускаемой погрешности скоб, мм, в интервалах шкалы

±30 делений от нулевого штриха

св. ±30 делений от нулевого штриха

на нормированном участке 0,1 мм

на любом участке 3 мм

СР

0-25

±0,001

±0,002

25-50

50-75

75-100

100-125

125-150

СИ

0-50

±0,005

±0,008

500-100

100-200

±0,010

200-300

±0,007

±0,012

300-400

400-500

±0,015

500-600

600-700

±0,020

700-850

850-1000

СРП

0-25

±0,0007

±0,0014

25-50

Примечание. У скоб типа СИ, в случае использования в качестве отсчетного устройства индикатора, нормированный участок 0,1 мм устанавливается в пределах второго оборота.

(Измененная редакция, Изм. N 2, 5).

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

2.4. Измерительная поверхность переставной пятки и упора должна быть плоской, а подвижной пятки — плоской у скоб с верхним пределом измерений до 200 мм и сферической с радиусом сферы от 80 до 100 мм — у скоб с верхним пределом измерений более 200 мм.

2.5. Отклонения от плоскостности и параллельности измерительных поверхностей скоб не должны превышать величин, указанных в табл.4.

Таблица 4

Тип скоб

Диапазон измерений скоб, мм

Допуск

плоскостности в интерференционных полосах

параллельности при закрепленном стопоре, мкм

СР

0-25

2

1,2

25-50

1,5

50-75

2,0

75-100

2,5

100-125

3,0

125-150

3,5

СИ

0-50

3

3,5

50-100

3,5

100-200

6,0

Св. 200

4

СРП

0-25

25-50

1

0,9

Примечание. На расстоянии 0,5 мм от края измерительной поверхности допускаются завалы.

(Измененная редакция, Изм. N 2, 5).

2.6. Сферические и плоские измерительные поверхности пяток скоб должны быть оснащены твердым сплавом.

По заказу потребителя измерительные поверхности пяток скоб должны изготовляться без оснащения твердым сплавом.

Твердость упоров и плоских измерительных поверхностей пяток, не оснащенных твердым сплавом, должна быть не менее 59 HRCэ.

2.7. Шероховатость измерительных поверхностей пяток — 0,040 мкм на базовой длине 0,25 мм, упоров — 0,320 мкм на базовой длине 0,25 мм.

2.8. Номинальный диаметр подвижной пятки скоб должен быть не менее 8 мм.

Номинальный диаметр переставной пятки скоб типов СРП и СР должен быть не менее 8 мм, а скоб типа СИ не менее 12 мм — у скоб с верхним пределом измерений до 200 мм, не менее 20 мм — у скоб с верхним пределом измерений свыше 200 до 400 мм, и не менее 36 мм — у скоб с верхним пределом измерений более 400 мм.

По заказу потребителя для скоб типов СРП и СР номинальный диаметр подвижной и переставной пяток должен быть не менее 11 мм.

2.6-2.8. (Измененная редакция, Изм. N 5).

2.9. (Исключен, Изм. N 5).

2.10. (Исключен, Изм. N 1).

2.11. Корпус скобы должен быть настолько жестким, чтобы изменение показаний скобы от изгиба при усилии в 10 Н (1 кгс), направленном по оси измерения, не превышало величин, указанных в табл.5.

Таблица 5

мм

Верхний предел измерения скоб

Допускаемое изменение показаний от изгиба

Верхний предел измерения скоб

Допускаемое изменение показаний от изгиба

25; 50

0,002

500

0,010

75; 100; 125; 150

0,003

600

0,012

200

0,004

700

0,014

300

0,006

850

0,016

400

0,008

1000

0,020

(Измененная редакция, Изм. N 1, 5).

2.12. (Исключен, Изм. N 5).

2.13. Длина деления шкалы отсчетного устройства должна быть не менее 0,9 мм, ширина стрелки и штрихов — 0,15-0,25 мм. Разница в ширине отдельных штрихов в пределах одной шкалы не должна превышать 0,05 мм.

(Измененная редакция, Изм. N 5).

2.14. (Исключен, Изм. N 5).

2.15. Конец стрелки должен перекрывать короткие штрихи не менее чем на 0,3 и не более чем на 0,8 их длины. Высота расположения стрелки над шкалой не должна превышать 0,5 мм.

2.16. Скобы типов СРП и СР должны быть снабжены указателем пределов допуска. Указатели должны устанавливаться в любом месте в пределах шкалы и не должны смещаться с установленного положения и касаться стрелки во время работы.

Концы указателей должны перекрывать короткие штрихи шкалы.

(Измененная редакция, Изм. N 1, 5).

2.17. (Исключен, Изм. N 5).

2.18. Технические требования к отсчетному устройству с ценой деления 0,01 мм — по ГОСТ 577.

2.19. Наружные поверхности скоб, за исключением измерительных, должны иметь противокоррозионное покрытие по ГОСТ 9. 303 и ГОСТ 9.032.

(Измененная редакция, Изм. N 5).

2.20. На скобах должны быть теплоизоляционные накладки.

2.21. Средняя наработка на отказ не менее 1300000 двойных ходов — для скоб типа СРП; 650000 двойных ходов — для скоб типа СР; 250000 двойных ходов — для скоб типа СИ.

Критерием отказа является несоответствие скоб требованиям п.2.2.

(Измененная редакция, Изм. N 4, 5).

2.22. Полный средний срок службы для списания скоб типа СРП — 6 лет, типа СР — 5 лет, скоб типа СИ — 2 года.

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

(Измененная редакция, Изм. N 5).

2.23. Срок сохраняемости — 2 года.

(Измененная редакция, Изм. N 2, 4).

2.24. Скобы типов СРП и СР при транспортировании должны выдерживать воздействие температур от минус 60°С до плюс 50°С и воздействие пониженного давления воздуха 24,3 кПа.

2.25. Маркировка и упаковка скоб — по ГОСТ 13762.

Примечание. На каждой шкале отсчетного устройства у скоб типов СРП и СР должны быть нанесены знаки «+» и «-«.

На переставных пятках скоб типа СИ с верхним пределом измерений 200 мм и более должны быть нанесены пределы измерений.

Обозначение стандарта на скобе допускается не наносить.

2.24, 2.25. (Введены дополнительно, Изм. N 5).

2а. ПРИЕМКА

2а.1. Для проверки соответствия скоб требованиям настоящего стандарта проводят государственные испытания, приемочный контроль, периодические испытания и испытания на надежность.

(Измененная редакция, Изм. N 3, 4).

2а.2. Государственные испытания — по ГОСТ 8.383 и ГОСТ 8.001.

(Измененная редакция, Изм. N 3).

2а.3. При приемочном контроле каждую скобу проверяют на соответствие требованиям пп.2.2, 2.3, 2.5, 2.7, 2.15 и 2.16.

(Измененная редакция, Изм. N 3, 5).

2а.4. Периодические испытания проводят не реже раза в три года не менее чем на трех скобах из числа прошедших приемочный контроль на соответствие всем требованиям настоящего стандарта, кроме пп. 2.21-2.23.

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

(Измененная редакция, Изм. N 3, 4, 5).

2а.5. Подтверждение показателей надежности (пп.2.21-2.23) проводят не реже одного раза в три года по программе испытаний на надежность, разработанной в соответствии с ГОСТ 27.410 и утвержденной в установленном порядке.

Допускается совмещение испытаний на надежность с периодическими.

(Измененная редакция, Изм. N 5).

2б. МЕТОДЫ КОНТРОЛЯ И ИСПЫТАНИЙ

2б.1. Проверка скоб — по ГОСТ 8.359.

(Измененная редакция, Изм. N 2).

2б.2. (Исключен, Изм. N 5).

2б.3. При проверке влияния транспортной тряски используют ударный стенд, создающий тряску ускорением 30 м/с и частотой 80-120 ударов в минуту. Ящики с упакованными скобами крепят к стенду и испытывают при общем числе ударов 15000. Результаты испытаний считают удовлетворительными, если все испытанные скобы соответствуют требованиям пп. 1.3 и 2.2.

(Измененная редакция, Изм. N 4, 5).

2б.4. Воздействие климатических факторов внешней среды при транспортировании проверяют в климатических камерах. Испытания проводят в упаковке в следующем режиме: для скоб типа СИ при температуре минус (50±3)°С, затем плюс (50±3)°С; для скоб типов СРП и СР при температуре минус (60±3) °С, затем плюс (50±3) °С и далее при относительной влажности (95±3)% при температуре 35°С. Выдержка в климатических камерах в каждом режиме — 2 ч.

Результаты испытаний считают удовлетворительными, если все испытанные скобы соответствуют требованиям пп.1.3 и 2.2.

2б.3, 2б.4. (Измененная редакция, Изм. N 5).

2б.5. Для проведения испытаний при пониженном давлении воздуха скобы типов СРП и СР в упаковке помещают в барокамеру и понижают давление воздуха до (24,3±3) кПа. Давление в камере поддерживают не менее 2 ч.

Результаты испытаний считают удовлетворительными, если все испытанные скобы соответствуют требованиям пп.1.3 и 2.2.

(Введен дополнительно, Изм. N 5).

3. ТРАНСПОРТИРОВАНИЕ И ХРАНЕНИЕ

3.1. Транспортирование и хранение — по ГОСТ 13762.

Разд.3. (Измененная редакция, Изм. N 5).

4. ГАРАНТИИ ИЗГОТОВИТЕЛЯ

4.1. Изготовитель должен гарантировать соответствие скоб требованиям настоящего стандарта при условии соблюдения правил их хранения и эксплуатации.

Гарантийный срок эксплуатации — 12 мес со дня ввода скоб в эксплуатацию.

(Измененная редакция, Изм. N 3).

Электронный текст документа

и сверен по:

М.: ИПК Издательство стандартов, 1999

Алгоритм

— Другие способы проверки сбалансированной скобки?

Эта задача поднимает ряд интересных вопросов в алгоритмическом анализе, которые, возможно, находятся на слишком высоком уровне для вашего класса, но над которыми было интересно подумать. Я набросал наихудшее и ожидаемое время выполнения для всех алгоритмов, которые находятся где-то между лог-линейным и квадратичным.

Единственный алгоритм экспоненциального времени, который я мог придумать, был эквивалентом Bogosort: генерировать все возможные сбалансированные строки, пока не найдете подходящую. Это казалось странным даже для классного упражнения. Еще более странным был бы модифицированный Bogocheck, который генерирует только все ()-сбалансированные строки и использует некоторую хитрость, чтобы выяснить, какие фактические скобки использовать при сравнении. (Если вам интересно, я мог бы расширить эту возможность.)

В большинстве алгоритмов, представленных здесь, я использую процедуру, называемую «сканирование с сохранением глубины скобок». Эта процедура проверяет символы по одному в указанном порядке (вперед или назад), поддерживая общее количество наблюдаемых открытых скобок (всех типов) за вычетом наблюдаемых закрывающих скобок (опять же, всех типов). При сканировании в обратном направлении значения слов «открыть» и «закрыть» меняются местами. Если счетчик когда-либо становится отрицательным, строка не сбалансирована, и вся процедура может немедленно вернуть ошибку.

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

Алгоритм 1: найти совпадающую скобку

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

Если конец строки достигнут без обнаружения сбоя, строка сбалансирована.

Алгоритм 2: Глубинное сканирование

Установите глубины на 1.

LOOP: сканирование слева направо от первого символа с сохранением глубины параллелепипеда. Если встречается открытие и глубина скобки увеличивается до , глубина запоминается. Если глубина скобки равна , глубина и встречается закрытие, проверьте, совпадает ли оно с запомненным открытием; если это не так, потерпите неудачу немедленно.

Если конец строки достигнут до того, как будет запомнено какое-либо открытие, сообщить об успехе. Если достигнут конец строки и последнее запомненное открытие никогда не совпадало с закрытием, сообщите об ошибке. В противном случае увеличьте глубину до и повторите ЦИКЛ.


Оба вышеприведенных варианта имеют наихудшую (квадратичную) производительность для полностью вложенной строки ((…()…)) . Однако вычислить среднюю временную сложность сложнее.

Каждый цикл в алгоритме 2 занимает ровно &Theta(N) времени. Если общая глубина круглой скобки строки не равна 0 или в строке есть какая-либо точка, где кумулятивная глубина круглой скобки имеет отрицательное значение, то при первом сканировании будет сообщено об ошибке, занимающей линейное время. Это составляет подавляющее большинство строк, если входные данные выбираются случайным образом из всех строк, содержащих символы скобок.

О строках, которые не отбрасываются тривиально, т. е. о строках, которые совпали бы, если бы все открытия были заменены на ( и все закрываются с помощью ) , включая строки, которые правильно сбалансированы — ожидаемое количество сканирований — это ожидаемая максимальная глубина скобок строки, которая равна Θ(log N) (доказать, что это интересное упражнение, но Я думаю, это не так уж сложно), поэтому общее ожидаемое время равно Θ(N log N).

Алгоритм 1 в общем случае более сложен для анализа, но для полностью случайных строк можно с уверенностью предположить, что первое несовпадение будет найдено за ожидаемое линейное время. Однако у меня нет для этого доказательств. Если строка действительно сбалансирована, об успешном завершении сканирования будет сообщено, а выполненная работа будет суммой длин промежутков каждой пары сбалансированных скобок. Я полагаю, что это приблизительно Θ(N log N), но я хотел бы провести некоторый анализ, прежде чем подтверждать этот факт.


Вот алгоритм, который гарантированно будет O(N log N) для любых входных данных, но который требует Θ(N) дополнительного пространства:

Алгоритм 3: Сортировка совпадающих пар

Создайте вспомогательный вектор длины N, чей элемент i th представляет собой набор из двух элементов, состоящий из кумулятивной глубины параллелепипеда символа в позиции i и самого индекса i . Глубина скобки открытия определяется как глубина скобки непосредственно перед подсчетом открытия, а глубина скобки закрытия — это глубина скобки сразу после подсчета закрытия; следствием этого является то, что сопоставление open и close имеет одинаковую глубину параллелепипеда.

Теперь отсортируйте вспомогательный вектор по возрастанию, используя лексикографическое сравнение кортежей. Можно использовать любой алгоритм сортировки O(N log N); обратите внимание, что стабильная сортировка не требуется, поскольку все кортежи различны. [Примечание 1].

Наконец, выполните итерацию по отсортированному вектору, выбирая два элемента за раз. Отклонить строку, если два элемента не имеют одинаковой глубины или не являются совпадающей парой открытых и закрытых элементов (используя индекс в кортеже для поиска символа в исходной строке).

Если весь отсортированный вектор может быть просканирован без ошибок, то строка сбалансирована.


Наконец, решение на основе регулярных выражений, потому что все любят регулярные выражения. 🙂 Этот алгоритм уничтожает входную строку (если не делается копия), но требует только постоянной дополнительной памяти.

Алгоритм 4: Regex на помощь!

Выполняйте следующий поиск и замену до тех пор, пока поиск ничего не найдет: (я написал это для sed с использованием Posix BRE, но если это слишком неясно, шаблон состоит именно из чередования каждой возможной совпавшей пары open-close.)

 с/()\|[]\|{}//г
 

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

Обратите внимание на g , что означает, что поиск и замена выполняется по всей строке при каждом проходе. Каждый проход занимает время, пропорциональное оставшейся длине строки в начале прохода, но для простоты можно сказать, что стоимость прохода составляет O(N). Количество выполненных проходов — это максимальная глубина параллелепипеда строки, которая в худшем случае равна Θ(N), но имеет ожидаемое значение Θ(log N). Таким образом, в худшем случае время выполнения равно Θ(N 2 ), но ожидаемое время равно Θ(N log N).

Примечания

  1. Возможна стабильная сортировка подсчетом O(N) по глубине скобки. В этом случае общий алгоритм будет O(N) вместо O(N log N), но это не то, что вы хотели, верно? Вы также можете использовать стабильную сортировку только по глубине скобки, и в этом случае вы можете заменить второй элемент кортежа самим символом. Это все равно было бы O (N log N), если бы сортировка была O (N log N).

ruby ​​- Проверка наличия сбалансированных скобок в строке

спросил

Изменено 7 лет, 7 месяцев назад

Просмотрено 9к раз

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

Проблема:

Строка S, состоящая только из символов ‘(‘ и ‘)’, называется правильно вложенной, если:

  • S пуст,
  • S имеет форму «(U)», где U — правильно вложенная строка,
  • S имеет форма «VW», где V и W правильно вложенные строки.

Например, «(()(())())» правильно вложена, а «())» — нет.

Написать функцию

 определение вложения (ов)
 

, что заданная строка S возвращает 1, если S правильно вложен и 0 в противном случае. Предположим, что длина S не превышает 1 000 000. Предположим, что С состоит только из символов ‘(‘ и ‘)’.

Например, задано S = «(()(())())» функция должна возвращать 1 и давать S = «())» функция должна вернуть 0, как описано выше.

Решение:

 определение вложенности ( s )
    # напишите сюда свой код
    если s == '(()(())())' && s. length <= 1000000
        вернуть 1
    elsif s == ' ' && s.length <= 1000000
        вернуть 1
    Эльсиф
        с == '())'
        вернуть 0
    конец
конец
 

2

Вот описания двух алгоритмов, которые должны достичь цели. Я оставлю читателю в качестве упражнения превратить их в код (если только вы явно не попросите кодовое решение):

  1. Начните с переменной, установленной на 0 , и прокручивайте каждый символ в строке: когда вы видите '(', добавьте единицу к переменной; когда вы видите ')', вычтите единицу из переменной. Если переменная когда-либо становится отрицательной, вы видели слишком много ')' и можете вернуть 0 немедленно. Если вы закончите перебирать символы, а переменная будет не совсем 0 , то у вас было слишком много '(' и вы должны вернуть 0 .

  2. Удалить все вхождения '()' в строке (заменить на ''). Продолжайте делать это, пока не обнаружите, что ничего не было заменено (проверьте возвращаемое значение gsub! ). Если строка пуста, скобки совпали. Если строка не пуста, значит, она не соответствует.

4

Нельзя просто перечислять приведенные примеры. Вы должны решить проблему в целом. Вы также не должны проверять, что длина меньше 1000000, вам разрешено это предполагать.

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

В качестве альтернативы вы также можете превратить спецификацию непосредственно в шаблон регулярных выражений, используя функцию рекурсивных регулярных выражений ruby ​​1.9, если вы к этому склонны.

1

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

  1. Определить хеш, который содержит список сбалансированных скобок для instance {"(" => ")", "{" => "}", и т. д....}
  2. Объявить стек (в нашем случае массив) т.е. скобки = []
  3. Перебрать строку, используя each_char, сравнить каждый символ с ключами хэша и поместить его в скобки
  4. В том же цикле сравните его со значениями хеша и вытащите символ из скобок
  5. В конце концов, если стопка скобок пуста, скобки сбалансированы.

    деф скобки_сбалансированные?(строка) вернуть false, если string.length < 2 скобки_хэш = {"(" => ")", "{" => "}", "[" => "]"} скобки = [] string.each_char сделать |x| скобки.push(x), если скобки_hash.keys.include?(x) скобки.pop, если скобки_hash.values.include?(x) конец вернуть скобки.пусто? конец

1

Вы можете решить эту проблему теоретически. Используя такую ​​грамматику:

 S ← LSR | ЛР
л ← (
Р ← )
 

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

0

Вот простой способ сделать это с помощью инъекции: 9\(\)]/, '').split('').inject(0) делать |счетчик, скобки| счетчик += (скобка == '(' ? 1 : -1) действительно = ложь, если счетчик < 0 прилавок конец.ноль? && действительный конец конец > "(a+b)".valid_parentheses? # => правда > "(a+b)(".valid_parentheses? # => false > "(a+b))".valid_parentheses? # => ложь > "(a+b))(".valid_parentheses? # => false

0

Вы правы, что беспокоитесь; Я думаю, что у вас не тот конец палки, и вы решаете проблему слишком буквально (информация о том, что строка не превышает 1 000 000 символов, предназначена только для того, чтобы люди не беспокоились о том, как медленно будет работать их код, если длина была в 100 раз больше, и примеры — это просто примеры, а не окончательный список строк, которые вы можете ожидать получить)

Я не собираюсь делать за вас домашнюю работу (написание кода), но дам вам указатель на решение, которое пришло мне в голову:

Строка правильно вложена, если каждая левая скобка имеет правую скобку справа от него или правильно вложенный набор скобок между ними.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *