Podczas testowania bezpieczeństwa systemu lub modelu wielokrotnie pojawiło się następujące pytanie .
Motywacja: Wady bezpieczeństwa oprogramowania często nie wynikają z błędów spowodowanych prawidłowymi danymi wejściowymi, ale z błędów wynikających z nieprawidłowych danych wejściowych, które są wystarczająco zbliżone do prawidłowych danych wejściowych, aby przejść przez wiele prostych kontroli poprawności. Klasycznym przykładem jest oczywiście przepełnienie bufora, w którym dane wejściowe są uzasadnione, z wyjątkiem tego, że są zbyt duże. Kompilatory i inne narzędzia mogą pomóc rozwiązać te problemy, modyfikując układ stosu i sterty oraz innymi technikami zaciemniania. Alternatywą jest usunięcie problemów z samego kodu źródłowego. Jedna technika zwana fuzzingiem bombarduje program z wejściami zbliżonymi do oczekiwanych, ale w niektórych miejscach są nieuzasadnione (duże wartości dla liczb całkowitych lub ciągów znaków). Chciałbym zrozumieć rozmycie (jako przykład) z bardziej formalnej perspektywy.
Załóżmy, że przestrzeń prawidłowych danych wejściowych jest opisana przez ograniczenia . Niech M będzie zbiorem rozwiązań takich ograniczeń, a mianowicie M = { m ∈ M | m ⊨ Φ } , gdzie M jest przestrzenią możliwych danych wejściowych.
Szukam pracy opisującej następujące pojęcia:
Półcień z jest zbiorem M ' ⊆ M taki, że dla każdego m ∈ M ' m ⊭ cp i w pewnym sensie elementy M " są blisko elementów M . Można myśleć o półcieniu jako prawie rozwiązaniu . Oczywiście to pojęcie nie będzie unikalne.
„Penumbra” to słowo, które wybrałem, aby opisać tę koncepcję. Można to nazwać czymś innym.
Inspirację znalazłem w morfologii matematycznej , stąd moja metafora wizualna, ale oba światy są od siebie oddzielone. Czy jest tam jakaś przydatna praca? A może w świecie surowych zestawów ?
Czy ktoś może rzucić światło?
Odpowiedzi:
Wiele uwagi poświęconej wariantom optymalizacji problemu ograniczenia ograniczeń (CSP) koncentrowało się na spełnieniu pewnej liczby ograniczeń (MAX-CSP) lub w przypadku logicznego wyboru rozwiązania, które przypisuje możliwie jak najwięcej zmiennych wartość 1 ( MAX-ONES, są też MIN-ONES).
Zamiast tego pytasz o wariant, który można by nazwać MAKSYMALNYM CZĘŚCIOWYM CSP. Zostało to zbadane przynajmniej w późnych latach sześćdziesiątych, ale nie jestem świadomy tego, że ma ustaloną nazwę. Jest to naturalny problem i dobrze byłoby zobaczyć więcej pracy nad jego badaniem. Dziękujemy za udostępnienie kolejnej potencjalnej aplikacji dla tego problemu!
Zestaw przypisań zmiennych wartości nazywany jest przypisaniem częściowym . Przypisanie zmiennej wartości można napisać jako krotkę (zmienna, wartość). Częściowe przypisania są wtedy po prostu funkcjami od zmiennych do wartości. Rekwizyty to częściowe zadania, które nie naruszają żadnych ograniczeń. Odpowiednio, rekwizyt nie zawiera częściowego przypisania zabronionego przez niektóre ograniczenia (jako podzbiór).
Jednym ze sposobów wyrażenia problemu optymalizacji jest:
Druga część twojego pytania również wydaje się bardzo interesująca, ale nie jestem świadoma żadnej pracy z tym związanej.
Przypis: Termin rekwizyt pochodzi z mojej tezy; ma na celu przekazanie idei, że takie częściowe zadania są właściwe, a także że wspierają one zestaw rozwiązań. Jest to sprzeczne z nogood , który jest przyjętym terminem opisującym częściowe przypisanie, którego nie można rozszerzyć na rozwiązanie. Słowo „nogood” zostało wprowadzone przez Richarda Stallmana i Geralda Sussmana w 1976 r., Kiedy RMS nadal był badaczem sztucznej inteligencji zamiast aktywistą wolności oprogramowania.
źródło