hotchpotch/wikipedia-multilingual-ir-pairs huggingface dataset:
불필요한 코드 제거 동적으로 불필요한 코드 제거
불필요한 코드는 일반적으로 무조건 불필요한 것으로 간주된다. 따라서 컴파일 타임에 불필요한 코드 제거를 통해 불필요한 코드를 제거하는 것이 합리적이다.
불필요한 코드 제거 동적으로 불필요한 코드 제거
그러나 실제로 특정 조건에서만 불필요하거나 도달 불가능한 코드 섹션이 되는 경우가 흔하며, 이는 컴파일 또는 어셈블리 시점에는 알려지지 않을 수 있다. 이러한 조건은 다양한 런타임 환경(예: 운영 체제의 다른 버전, 특정 대상 환경에 로드된 드라이버 또는 서비스의 다른 세트 및 조합)에 의해 부과될 수 있으며, 이는 코드에 다른 특수 사례 세트를 요구하지만 동시에 다른 경우에 대해 조건부 불필요한 코드가 될 수 있다. 또한 소프트웨어(예: 드라이버 또는 상주 서비스)는 사용자 기본 설정에 따라 특정 기능을 포함하거나 제외하도록 구성될 수 있어 특정 시나리오에서 사용되지 않는 코드 부분이 쓸모없게 될 수 있다. 모듈형 소프트웨어는 필요에 따라 동적으로 라이브러리를 로드하도록 개발될 수 있지만, 대부분의 경우 특정 라이브러리에서 관련 루틴만 로드하는 것은 불가능하며, 설령 이것이 지원되더라도 루틴에는 주어진 시나리오에서 불필요한 코드로 간주될 수 있지만 컴파일 타임에는 제외될 수 없었던 코드 섹션이 포함될 수 있다.
수요를 동적으로 감지하고, 종속성을 식별 및 해결하며, 이러한 조건부 불필요한 코드를 제거하고, 로드 또는 런타임에 나머지 코드를 재결합하는 데 사용되는 기술을 동적 불필요한 코드 제거 또는 동적 불필요한 명령어 제거라고 한다.
대부분의 프로그래밍 언어, 컴파일러 및 운영 체제는 동적 적재 라이브러리 및 늦은 연결 외에는 거의 또는 전혀 지원을 제공하지 않으므로 선행 컴파일된 언어로 작성되거나 어셈블리어로 작성된 언어와 함께 동적 불필요한 코드 제거를 활용하는 소프트웨어는 매우 드물다. 그러나 Just-in-time 컴파일을 수행하는 언어 구현은 동적으로 불필요한 코드 제거를 위해 최적화할 수 있다.
비록 초점은 다소 다르지만, 유사한 접근 방식은 때때로 동적 소프트웨어 업데이트 및 핫 패치에도 활용된다.
불필요한 코드 제거 더 읽어보기
Bodík, Rastislav; Gupta, Rajiv (June 1997). 《Partial dead code elimination using slicing transformations》. 《Proceedings of the ACM SIGPLAN 1997 Conference on Programming Language Design and Implementation (PLDI '97)》. 682–694쪽.
Kennedy, Ken; Allen, Randy (2002). 〈Chapter 4.4. Data Flow Analysis - Chapter 4.4.2. Dead Code Elimination〉. 《Optimizing Compilers for Modern Architectures: A Dependence-Based Approach》 2011 digital print of 1판. 아카데믹 프레스 / 모건 카우프만 퍼블리셔스 / 엘스비어. 137, 145–147, 167쪽. ISBN 978-1-55860-286-1. LCCN 2001092381.
불필요한 코드 제거 더 읽어보기
Muth, Robert; Debray, Saumya K.; Watterson, Scott; De Bosschere, Koen (January 2001). 《alto: a link-time optimizer for the Compaq Alpha.》. 《Software: Practice and Experience》 31. 67–101쪽. CiteSeerX 10.1.1.33.4933. doi:10.1002/1097-024X(200101)31:1<67::AID-SPE357>3.0.CO;2-A. S2CID 442062.  지원되지 않는 변수 무시됨: |orig-date= (도움말)
별칭 분석
별칭 분석(alias analysis)은 컴파일러 이론에서 저장 위치가 두 가지 이상의 방식으로 접근될 수 있는지 확인하는 데 사용되는 기술이다. 두 포인터가 동일한 위치를 가리키는 경우 별칭 처리된다고 말한다.
별칭 분석 기술은 일반적으로 흐름 민감도와 문맥 민감도에 따라 분류된다. 이는 may-alias 또는 must-alias 정보를 결정할 수 있다. 별칭 분석이라는 용어는 특정 사례인 포인터 분석과 종종 상호 교환적으로 사용된다.
별칭 분석기는 프로그램 내 별칭 처리를 이해하는 데 유용한 정보를 만들고 계산하는 것을 목표로 한다.
별칭 분석 개요
일반적으로 별칭 분석은 별개의 메모리 참조가 메모리의 동일한 영역을 가리키는지 여부를 결정한다. 이를 통해 컴파일러는 프로그램의 어떤 변수가 특정 문장에 의해 영향을 받을지 결정할 수 있다. 예를 들어, 구조체 멤버에 접근하는 다음 코드 섹션을 고려해 보자:
여기에는 세 가지 가능한 별칭 사례가 있다:
만약 p와 q가 별칭 처리될 수 없다면, i = p.foo + 3;는 i = 4로 변경될 수 있다. 만약 p와 q가 반드시 별칭 처리되어야 한다면, i = p.foo + 3;는 i = 5로 변경될 수 있는데, 왜냐하면 p.foo + 3 = q.foo + 3이기 때문이다. 두 경우 모두, 별칭 지식으로부터 최적화를 수행할 수 있다 (다른 스레드가 동일한 위치를 업데이트하여 현재 스레드와 인터리빙될 수 없거나, 언어 메모리 모델이 명시적인 동기화 구성이 없는 경우 현재 스레드에게 즉시 보이지 않도록 해당 업데이트를 허용한다고 가정한다). 반면에, p와 q가 별칭 처리되는지 여부가 알려지지 않으면, 어떤 최적화도 수행할 수 없으며 결과를 얻기 위해 전체 코드가 실행되어야 한다. 두 메모리 참조는 별칭 처리가 알려지지 않은 경우 may-alias 관계를 갖는다고 말한다.
별칭 분석 별칭 분석 수행
별칭 분석에서 우리는 프로그램의 메모리를 별칭 클래스로 나눈다. 별칭 클래스는 서로 별칭 처리될 수 없는 위치들의 분리된 집합이다. 여기서는 여기서 수행되는 최적화가 프로그램의 저수준 중간 표현에서 발생한다고 가정한다. 즉, 프로그램이 이진 연산, 점프, 레지스터 간 이동, 레지스터에서 메모리로 이동, 메모리에서 레지스터로 이동, 분기, 함수 호출/반환으로 컴파일되었다는 의미이다.
컴파일되는 언어가 타입 안전하고, 컴파일러의 타입 검사기가 정확하며, 언어가 지역 변수를 참조하는 포인터를 생성하는 기능이 부족하다면 (예: ML, 하스켈, 또는 자바), 유용한 최적화를 수행할 수 있다. 두 메모리 위치가 다른 별칭 클래스에 있어야 한다고 아는 많은 경우가 있다:
코드에 대한 별칭 분석을 수행할 때, 메모리에 대한 모든 로드 및 스토어는 해당 클래스로 레이블이 지정되어야 한다. 그러면  별칭 클래스를 갖는 메모리 위치 와 가 주어졌을 때, 이면 는 와 may-alias 관계를 가지며, 이면 메모리 위치는 별칭 처리되지 않는다는 유용한 속성을 갖게 된다.
별칭 분석 별칭 분석 수행
흐름 기반 분석은 참조 또는 타입 캐스팅이 있는 언어의 프로그램에 적용될 수 있다. 흐름 기반 분석은 타입 기반 분석을 대신하거나 보완하는 데 사용될 수 있다. 흐름 기반 분석에서 새로운 별칭 클래스는 각 메모리 할당에 대해, 그리고 주소가 사용된 모든 전역 및 지역 변수에 대해 생성된다. 참조는 시간이 지남에 따라 하나 이상의 값을 가리킬 수 있으므로 하나 이상의 별칭 클래스에 속할 수 있다. 이는 각 메모리 위치가 단일 별칭 클래스 대신 별칭 클래스 집합을 갖는다는 것을 의미한다.
이스케이프 분석
컴파일러 최적화에서 이스케이프 분석(Escape analysis)은 포인터의 동적 범위를 결정하는 방법이다. 이 분석은 프로그램 내에서 포인터가 어디에 접근될 수 있는지를 파악한다. 이는 포인터 분석 및 형태 분석과 관련이 있다.
변수(또는 객체)가 서브루틴에 할당될 때, 변수에 대한 포인터는 다른 실행 스레드나 호출 서브루틴으로 이스케이프될 수 있다. 구현에서 꼬리 재귀 최적화(일반적으로 함수형 프로그래밍 언어에서 요구됨)를 사용하는 경우, 객체는 호출된 서브루틴으로 이스케이프하는 것으로 간주될 수도 있다. 언어가 1급 연속을 지원하는 경우(예: 스킴 및 Standard ML of New Jersey), 콜 스택의 일부도 이스케이프될 수 있다.
서브루틴이 객체를 할당하고 그 객체에 대한 포인터를 반환하는 경우, 해당 객체는 프로그램 내의 불특정한 위치에서 접근될 수 있다. 즉, 포인터가 "이스케이프"한 것이다. 포인터는 또한 전역 변수나 현재 프로시저를 벗어나는 다른 데이터 구조에 저장될 때도 이스케이프할 수 있다.
이스케이프 분석은 포인터가 저장될 수 있는 모든 위치와 포인터의 생명 주기가 현재 프로시저 및 스레드에만 제한되는지 여부를 판단한다.
이스케이프 분석 최적화
컴파일러는 이스케이프 분석 결과를 기반으로 최적화를 수행할 수 있다.
이스케이프 분석 실용적 고려 사항
객체 지향 프로그래밍 언어에서 동적 컴파일러는 이스케이프 분석을 수행하는 데 특히 적합하다. 전통적인 정적 컴파일에서는 메소드 오버라이딩으로 인해 이스케이프 분석이 불가능할 수 있다. 이는 호출된 모든 메소드가 포인터를 이스케이프시킬 수 있는 버전으로 오버라이드될 수 있기 때문이다. 동적 컴파일러는 오버로딩에 대한 가용한 정보를 사용하여 이스케이프 분석을 수행할 수 있으며, 관련 메소드가 동적 코드 로딩에 의해 오버라이드될 때 분석을 다시 수행할 수 있다.
자바 프로그래밍 언어의 인기로 인해 이스케이프 분석은 관심의 대상이 되었다. 자바의 힙 전용 객체 할당, 내장 스레딩, 썬 핫스팟 동적 컴파일러, 그리고 OpenJ9의 JIT 컴파일러 (JIT)의 조합은 이스케이프 분석 관련 최적화를 위한 후보 플랫폼을 제공한다 (자세한 내용은 자바의 이스케이프 분석 참조). 이스케이프 분석은 자바 표준 에디션 6에 구현되어 있다. 일부 JVM은 함수의 특정 경로에서 객체가 이스케이프하더라도 할당된 객체의 스칼라 대체를 가능하게 하는 부분 이스케이프 분석이라는 더 강력한 이스케이프 분석 변형을 지원한다.
이스케이프 분석 예시 (자바)
이 예시에서는 두 개의 객체가 생성되고(alloc 주석), 그 중 하나가 다른 객체의 메소드에 인수로 제공된다. `setFoo()` 메소드는 받은 Foo 객체에 대한 참조를 저장한다. Bar 객체가 힙에 있었다면 Foo에 대한 참조는 이스케이프되었을 것이다. 그러나 이 경우 컴파일러는 이스케이프 분석을 통해 Bar 객체 자체가 `example()` 호출을 벗어나지 않는다는 것을 판단할 수 있다. 결과적으로 Foo에 대한 참조도 이스케이프할 수 없으며, 컴파일러는 두 객체를 안전하게 스택에 할당할 수 있다.
이스케이프 분석 예시 (스킴)
다음 예시에서 벡터 p는 g로 이스케이프되지 않으므로 스택에 할당된 후 g를 호출하기 전에 스택에서 제거될 수 있다.
그러나 만약 다음과 같다면
p는 힙에 할당되거나 (g가 f가 컴파일될 때 컴파일러에 알려져 있고 잘 작동한다면) g가 호출될 때 제자리에 유지될 수 있는 방식으로 스택에 할당되어야 한다.
연속을 사용하여 예외와 같은 제어 구조를 구현하는 경우, 이스케이프 분석은 이를 자주 감지하여 실제 연속을 할당하고 콜 스택을 복사하는 것을 피할 수 있다. 예를 들어, 다음에서
이스케이프 분석은 `call/cc`에 의해 캡처된 연속이 이스케이프하지 않으므로 연속 구조를 할당할 필요가 없으며, `continuation`을 호출하여 연속을 호출하는 것은 스택 풀기를 통해 구현될 수 있다고 판단할 것이다.
전자 회로 시뮬레이션
전자 회로 시뮬레이션(Electronic circuit simulation)은 실제 전자 장치나 회로의 동작을 복제하기 위해 수학적 모델을 사용한다.
시뮬레이션 소프트웨어는 회로 동작 모델링을 가능하게 하며 귀중한 분석 도구이다. 높은 정확도의 모델링 능력 덕분에 많은 대학교에서 이 유형의 소프트웨어를 전자기술자 및 전자공학 프로그램 교육에 활용한다. 전자 시뮬레이션 소프트웨어는 사용자를 학습 경험에 통합시킴으로써 사용자를 참여시킨다. 이러한 종류의 상호작용은 학습자가 내용을 분석하고, 합성하고, 구성하고, 평가하도록 적극적으로 참여시켜 학습자가 자신의 지식을 구성하게 한다.
전자 회로 시뮬레이션
실제로 회로를 구축하기 전에 회로의 동작을 시뮬레이션하는 것은 결함이 있는 설계를 알려주고 전자 회로 설계의 동작에 대한 통찰력을 제공함으로써 설계 효율성을 크게 향상시킬 수 있다. 특히 집적 회로의 경우, 툴링(포토마스크)은 비싸고, 브레드보드는 비실용적이며, 내부 신호의 동작을 탐침하는 것은 매우 어렵다. 따라서 거의 모든 IC 설계는 시뮬레이션에 크게 의존한다. 가장 잘 알려진 아날로그 시뮬레이터는 SPICE이다. 아마도 가장 잘 알려진 디지털 시뮬레이터는 베릴로그 및 VHDL 기반의 시뮬레이터일 것이다.
일부 전자 시뮬레이터는 회로도 편집기, 시뮬레이션 엔진 및 온스크린 파형 표시(그림 1 참조)를 통합하여 설계자가 시뮬레이션된 회로를 신속하게 수정하고 변경 사항이 출력에 미치는 영향을 확인할 수 있도록 한다. 또한 일반적으로 광범위한 모델 및 장치 라이브러리를 포함한다. 이러한 모델에는 일반적으로 BSIM과 같은 IC 특정 트랜지스터 모델, 저항기, 축전기, 유도자 및 변압기와 같은 일반 구성 요소, 사용자 정의 모델(베릴로그-A 또는 VHDL-AMS의 제어 전류 및 전압 소스 또는 모델 등)이 포함된다. 인쇄 회로 기판 (PCB) 설계에는 트레이스용 전송선로 및 구동 및 수신 전자장치용 IBIS 모델과 같은 특정 모델도 필요하다.
전자 회로 시뮬레이션 유형
엄격히 아날로그 신호 시뮬레이터가 존재하지만, 인기 있는 시뮬레이터는 종종 아날로그 및 이벤트 기반 디지털 시뮬레이션 기능을 모두 포함하며 동시에 둘 다 시뮬레이션할 수 있는 경우 혼합 모드 또는 혼합 신호 시뮬레이터로 알려져 있다. 전체 혼합 신호 분석은 하나의 통합 회로도로부터 구동될 수 있다. 혼합 모드 시뮬레이터의 모든 디지털 모델은 전파 시간 및 상승/하강 시간 지연에 대한 정확한 사양을 제공한다.
혼합 모드 시뮬레이터가 제공하는 이벤트 기반 알고리즘은 범용이며 비디지털 유형의 데이터를 지원한다. 예를 들어, 요소는 실제 또는 정수 값을 사용하여 DSP 기능 또는 샘플링된 데이터 필터를 시뮬레이션할 수 있다. 이벤트 기반 알고리즘이 표준 SPICE 매트릭스 솔루션보다 빠르기 때문에 아날로그 모델 대신 이벤트 기반 모델을 사용하는 회로의 시뮬레이션 시간이 크게 단축된다.
혼합 모드 시뮬레이션은 세 가지 수준으로 처리된다. 타이밍 모델과 내장된 12 또는 16 상태 디지털 논리 시뮬레이터를 사용하는 원시 디지털 요소, 집적 회로의 실제 트랜지스터 토폴로지를 사용하는 서브서킷 모델, 그리고 마지막으로 인라인 불 논리 표현식이다.
전자 회로 시뮬레이션 유형
정확한 표현은 주로 IC의 I/O 특성을 면밀히 검사해야 하는 전송선로 및 신호 무결성 문제 분석에 사용된다. 불 논리 표현식은 아날로그 환경에서 효율적인 논리 신호 처리를 제공하는 데 사용되는 지연 없는 함수이다. 이 두 가지 모델링 기술은 SPICE를 사용하여 문제를 해결하는 반면 세 번째 방법인 디지털 원시 요소는 혼합 모드 기능을 사용한다. 이러한 각 방법에는 장점과 대상 응용 프로그램이 있다. 사실, 많은 시뮬레이션(특히 A/D 기술을 사용하는 시뮬레이션)은 세 가지 접근 방식의 조합을 필요로 한다. 어떤 한 가지 접근 방식만으로는 충분하지 않다.
주로 전력 전자공학에 사용되는 또 다른 유형의 시뮬레이션은 조각별 선형 알고리즘을 나타낸다. 이러한 알고리즘은 전력 전자 스위치가 상태를 변경할 때까지 아날로그(선형) 시뮬레이션을 사용한다. 이때 다음 시뮬레이션 기간에 사용할 새로운 아날로그 모델이 계산된다. 이 방법론은 시뮬레이션 속도와 안정성을 크게 향상시킨다.
전자 회로 시뮬레이션 복잡성
공정 변화는 설계가 제조될 때 발생하며 회로 시뮬레이터는 이러한 변화를 종종 고려하지 않는다. 이러한 변화는 작을 수 있지만, 함께 작용하면 칩의 출력을 크게 바꿀 수 있다.
온도 변화도 모델링하여 온도 범위에서 회로의 성능을 시뮬레이션할 수 있다.
전자 회로 시뮬레이션 어드미턴스 행렬을 이용한 시뮬레이션
선형 회로 시스템을 시뮬레이션하는 일반적인 방법은 어드미턴스 행렬 또는 Y 행렬을 사용하는 것이다. 이 기술은 개별 선형 구성 요소를 N 포트 어드미턴스 행렬로 모델링하고, 구성 요소 Y 행렬을 회로의 노달 어드미턴스 행렬에 삽입하고, 포트를 포함하는 노드에 포트 종단을 설치하고, 크론 축소를 통해 노드 없는 포트를 제거하고, 필요에 따라 최종 Y 행렬을 S 또는 Z 행렬로 변환하고, Y, Z 및 S 행렬에서 원하는 측정을 추출하는 것을 포함한다.
1dB의 통과 대역 리플과 1GHz의 차단 주파수를 갖는 5차, 50옴 체비쇼프 필터는 체비쇼프 카우어 토폴로지와 후속 임피던스 및 주파수 스케일링을 사용하여 설계되었으며, 아래 표와 Micro-cap 회로도에 표시된 요소를 생성한다.
위 표는 시뮬레이션할 노드 연결과 함께 모델링할 이상적인 요소 목록을 제공한다. 다음으로, 각 비포트 요소는 시뮬레이션할 각 주파수에 대해 2x2 Y 파라미터 모델로 변환되어야 한다. 이 예에서는 1GHz 주파수가 선택되었다.
노드 0, 즉 접지 노드에 연결된 요소는 해당 Y12 또는 Y21을 계산할 필요가 없으며, 표에 "해당 없음"으로 표시된다.
전자 회로 시뮬레이션 어드미턴스 행렬을 이용한 시뮬레이션
이상적인 인덕터 및 축전기 모델은 Y11 = Y22 = -Y12 = -Y21인 매우 간단한 2x2 모델로 구성되지만, 대부분의 실제 요소는 그렇게 간단하게 모델링될 수 없다는 점을 기억해야 한다. 예를 들어, 전송선로 및 실제 인덕터 및 축전기 모델의 경우 Y11 != -Y12이며, 일부 더 복잡한 수동 비대칭 요소의 경우 Y11 != Y22이다. 연산 증폭기와 같은 많은 능동 선형 장치의 경우 Y12 != Y21이다. 따라서 이 섹션의 예제에서는 더 복잡한 실제 장치에 적용되는 시뮬레이션 프로세스를 설명하기 위해 독립적인 Y11, Y12, Y21 및 Y22를 사용한다.
각 요소 Y 파라미터는 아래 규칙에 따라 연결된 노드에 합산하여 노달 어드미턴스 행렬에 삽입된다.
두 번째 노드가 0이 아닌 경우, 즉 접지가 아닌 경우:
아래 표는 해당 위치에 합산된 체비쇼프 요소의 2x2 Y 파라미터를 보여준다.
전자 회로 시뮬레이션 어드미턴스 행렬을 이용한 시뮬레이션
1GHz 또는 다른 주파수에서 필터를 시뮬레이션하려면 요소 Y 파라미터를 설치된 요소에 적합한 Y 파라미터 모델을 사용하여 수치 항목으로 변환해야 한다. 이상적인 인덕터 및 축전기의 경우, 인덕터에 대해 잘 알려진 Y11 = Y22 = -Y12 = -Y21 =  및 축전기에 대해 Y11 = Y22 = -Y12 = -Y21 = 는 충분하다. 수치 변환은 아래 표에 나와 있다.
포트가 노드 1과 노드 4에만 연결되어 있으므로, 노드 2와 3은 크론 축소를 통해 제거되어야 한다. 아래 표는 노드 2와 4가 제거된 후의 체비쇼프 필터 예제 시뮬레이션의 축소된 Y 파라미터 행렬을 보여준다. 축소된 표의 노드는 1과 2로 다시 번호가 매겨진다.
체비쇼프 주파수 응답은 S 파라미터 행렬, 즉 |S12|에서 관찰되므로 다음 단계는 각 노드에 대해 포트 임피던스를 특성 임피던스(또는 특성 어드미턴스)로 사용하여 잘 알려진 Y 행렬을 S 행렬로 변환하는 것이다.
시뮬레이션된 S 파라미터는 또한 군지연과 위상지연과 같은 사후 시뮬레이션 처리에 유용하다.
전자 회로 시뮬레이션 어드미턴스 행렬을 이용한 시뮬레이션
체비쇼프 주파수 응답이 0에서 1GHz까지 1dB 등리플 응답으로 |S12|에서 관찰될 것으로 예상되므로, 복소수 S 파라미터 항목은 표준 를 사용하여 해당 크기로 변환해야 한다.
이 시점에서 몇 가지 빠른 유효성 검사를 수행하는 것이 유용할 수 있다. 예제 체비쇼프 필터 설계 요구 사항이 1GHz의 차단 주파수에서 -1dB 감쇠이므로 1GHz에서의 |S12|는 -1dB가 될 것으로 예상된다. 또한, 모든 시뮬레이션 요소가 손실이 없으므로, 잘 알려진 관계인 |S11|2+|S12|2 = 1은 1GHz를 포함한 모든 주파수에서 적용된다.
예제에 대한 최종 유효성 테스트는 전체 유효 범위에 걸쳐 체비쇼프 필터 주파수 응답을 시뮬레이션하는 것으로, 이 경우 100MHz에서 5GHz로 간주된다. 이 범위는 0에서 -1dB 사이의 통과 대역의 등리플 |S12|를, 1GHz에서 급격하게 감소하는 정지 대역 |S12|를, 그리고 예상 피크 값인 20log10(.4535...) = -6.86825dB에서의 등리플 |S12|를 볼 수 있도록 해야 한다.
모든 시뮬레이션 출력이 예상 결과에 부합하므로 체비쇼프 필터 예제 시뮬레이션은 정확함이 확인되었다.
전자 회로 시뮬레이션 어드미턴스 행렬을 이용한 시뮬레이션
S 파라미터는 시뮬레이션되는 모든 노드에 종단을 필요로 하므로, 네트워크의 내부 노드와 같이 종단되지 않은 노드에 대한 S 파라미터 값 시뮬레이션은 기술적으로 지원되지 않는다. 그러나 노드를 종단시키기 위해 유의미한 오류를 발생시키지 않을 만큼 충분히 큰 저항성 종단을 종단되지 않은 노드에 배치하는 것으로 노드를 정확하게 시뮬레이션하기에 충분하다. 예를 들어, 위에서 제거된 두 내부 노드에는 1e+09옴 포트가 부착될 수 있었으므로, 크론 축소를 사용하여 노드를 제거하는 대신 과도하게 큰 저항성 포트로 노드를 정확하게 시뮬레이션할 수 있었다.
네트워크에 대한 입력 소스가 저항이 없는 이상적인 전압 소스인 경우, 위 예제는 유의미한 오류를 발생시키지 않을 만큼 충분히 작은 포트 저항을 포함시킴으로써 작동하게 만들 수 있다. 예를 들어, 다른 곳에서 50옴으로 종단된 네트워크에서 1e-09의 저항을 가진 포트는 충분한 정확도로 이상적인 소스를 모델링할 수 있다.
위 예제는 S 파라미터를 시뮬레이션하므로 S 파라미터에서 전달 함수를 얻기 위해 또 다른 변환이 필요하다. 변환은 이다.
다중물리 시뮬레이션
전산 모델에서 다중물리 시뮬레이션(Multiphysics simulation) 또는 다중물리는 물리 시스템 또는 시스템의 다양한 측면과 그들 간의 상호 작용을 동시에 시뮬레이션하는 것으로 정의된다. 예를 들어, 물체에 가해지는 물리적 응력, 물체의 온도 분포 및 응력 및 온도 분포의 변화를 유발하는 열팽창을 동시에 시뮬레이션하는 것은 다중물리 시뮬레이션으로 간주된다. 다중물리 시뮬레이션은 여러 시간 또는 거리 스케일에서 단일 프로세스를 동시에 시뮬레이션하는 다중 스케일 시뮬레이션과 관련이 있다.
학제간 분야로서 다중물리 시뮬레이션은 많은 과학 및 공학 분야에 걸쳐 있을 수 있다. 시뮬레이션 방법에는 종종 수치해석학, 편미분 방정식 및 텐서 해석이 포함된다.
다중물리 시뮬레이션 다중물리 시뮬레이션 과정
다중물리 시뮬레이션의 구현은 일련의 일반적인 단계를 따른다.
다중물리 시뮬레이션 수학적 모델
다중물리 시뮬레이션에 사용되는 수학적 모델은 일반적으로 연립 방정식 집합이다. 방정식은 성격과 의도된 역할에 따라 지배 방정식, 보조 방정식 및 경계/초기 조건의 세 가지 범주로 나눌 수 있다. 지배 방정식은 주요 물리적 메커니즘 또는 프로세스를 설명한다. 다중물리 시뮬레이션은 유한요소법, 유한차분법, 또는 유한체적법과 같은 이산화 방법으로 수치적으로 구현된다.
다중물리 시뮬레이션 다중물리 시뮬레이션의 과제
일반적으로 말해서, 다중물리 시뮬레이션은 물리적 프로세스의 개별 측면을 시뮬레이션하는 것보다 훨씬 어렵다.
주요 추가 문제는 프로세스의 여러 측면을 그들 간의 상호 작용을 적절하게 처리하면서 통합하는 방법이다.
이러한 문제는 개별 물리적 측면의 시뮬레이션에 다른 유형의 수치 방법이 사용될 때 상당히 어려워진다.
예를 들어, 일반적인 오일러 유한체적법을 유동에, 라그랑주 유한요소법을 구조 역학에 사용하여 유체-구조 상호작용 문제를 시뮬레이션하는 경우를 들 수 있다.
계산사회과학
계산사회과학(Computational social science)은 사회과학에 대한 계산적 접근 방식을 다루는 학제 간 학술 분야이다. 이는 컴퓨터를 사용하여 사회 현상을 모델링, 시뮬레이션 및 분석하는 것을 의미한다. 이는 계산경제학, 전산사회학, 계산 미디어 분석, 클리오다이내믹스, 컬투로믹스, 비영리 연구 등의 분야에 적용되었다. 데이터 사이언스 접근 방식(기계 학습 또는 규칙 기반 분석 등), 네트워크 분석, 사회 시뮬레이션 및 대화형 시스템을 사용한 연구를 통해 사회 및 행동 관계와 상호 작용을 조사하는 데 중점을 둔다.
계산사회과학 정의
서로 관련된 두 가지 용어가 있다: 사회과학 컴퓨팅(SSC)과 계산사회과학(CSS). 문헌에서 CSS는 사회 현상을 연구하는 데 계산적 접근 방식을 사용하는 사회과학 분야를 의미한다. 반면에 SSC는 사회 현상 설명을 돕기 위해 계산 방법론이 생성되는 분야이다.
계산사회과학은 과학적 방법의 두 가지 근본적인 축, 즉 빅 데이터를 통한 실증적 연구를 혁신한다. 특히 온라인 사회 활동을 통해 남겨진 디지털 발자국을 분석하고, 과학 이론은 사회 시뮬레이션을 통한 컴퓨터 시뮬레이션 모델 구축을 통해 혁신한다. 이는 고급 정보 기술을 통한 정보 처리에 중점을 둔 사회 조사의 다학제적 통합 접근 방식이다. 계산 작업에는 사회 연결망, 사회 지리 시스템, 소셜 미디어 콘텐츠 및 전통 미디어 콘텐츠의 분석이 포함된다.
계산사회과학 작업은 현재 여러 학제 간 프로젝트에서 구축 및 유지 관리하고 있는 대규모 데이터베이스의 가용성 증가에 점차 의존하고 있다. 여기에는 다음이 포함된다.
계산사회과학 정의
세샤트: 글로벌 역사 데이터뱅크(Seshat: Global History Databank)는 인간 집단의 정치 및 사회 조직과 시간이 지남에 따라 사회가 어떻게 진화했는지에 대한 최신 설명을 권위 있는 데이터뱅크로 체계적으로 수집한다. 세샤트는 "진화 과학을 사용하여 실제 문제를 해결"하는 비영리 싱크탱크인 진화 연구소(Evolution Institute)와도 제휴하고 있다.
방대한 양의 역사 신문 및 도서 콘텐츠 분석은 2017년에 개척되었으며, 유사한 데이터에 대한 다른 연구에서는 역사 신문에서 주기적 구조를 자동으로 발견할 수 있음을 보여주었다. 비슷한 분석이 소셜 미디어에서도 수행되었으며, 다시 강력한 주기적 구조가 드러났다.
계산사회과학 접근 방식
학제 간 분야로서 학자들은 다양한 기존 분야에서 온다. 그러나 이 분야가 전통적인 학문적 경계를 넘어 지식을 통합해야 한다는 공통된 정신이 있는 것으로 보인다. 그러나 넬리마르카는 계산사회과학에 대한 다섯 가지 뚜렷한 원형적 접근 방식을 제안한다.
전반적으로 계산사회과학은 다양한 학문적 활동이다. 특히 컴퓨터 과학에서 이 학문을 하나로 묶는 것으로 보이는 일부 학술 연구가 있지만, 그 외에는 더 다양한 커뮤니티가 있다.
계산사회과학 학술 출판 경로
계산사회과학 논문은 New Media & Society, Social Science Computer Review, PNAS, Political Communication, EPJ Data Science, PLOS ONE, Sociological Methods & Research 및 사이언스와 같은 여러 저널에 게재된다.
그러나 계산사회과학에만 초점을 맞춘 몇몇 학술지가 있다.
GB 2312
GB/T 2312-1980는 중화인민공화국의 주요 공식 문자 집합으로, 간체자에 사용된다. GB2312는 통상적인 인코딩 형식인 EUC-CN에 등록된 인터넷 이름이다. GB는 궈뱌오 표준(国家标准)을 의미하며, T 접미사(推荐, tuījiàn, 권장)는 비강제 표준을 나타낸다.
GB/T 2312-1980는 원래 GB 2312-1980로 지정된 강제 국가 표준이었다. 그러나 2017년 중화인민공화국 국가표준공보에 따라 GB 2312는 더 이상 강제 표준이 아니며, 표준 코드는 GB/T 2312-1980로 변경되었다. GB/T 2312-1980는 추가 문자를 포함하는 GBK와 GB 18030으로 대체되었지만, GB/T 2312는 이들 인코딩의 부분 집합으로 여전히 널리 사용되고 있다.
GB 2312
2022년 09월 기준 기준으로 GB2312는 중국 및 해당 지역에서 제공되는 인코딩 중 UTF-8 다음으로 두 번째로 많이 사용되는 인코딩으로, 웹 서버의 5.5%가 이를 선언하는 페이지를 제공한다. 전 세계적으로 GB2312는 전체 웹 페이지의 0.1%에서 선언된다. 그러나 대부분의 주요 웹 브라우저는 GB_2312 레이블이 붙은 사파리와 엣지를 제외하고는 GB2312로 표시된 문서를 상위 집합인 GBK 인코딩으로 표시된 것처럼 디코딩한다.
GB/T 12345 정보 교환용 한자 보충 집합 코드로 알려진 유사한 문자 집합이 있는데, 이는 GB/T 2312를 정체자 형태로 보충하여 간체 형태를 그 위코드(qūwèi code)로 대체하고, 추가로 62개의 보충 문자를 포함한다. GB 인코딩된 글꼴은 종종 GB/T 2312(간체) 문자 집합과 GB/T 12345(정체) 문자 집합으로 쌍을 이룬다. GB/T 2312를 보충하는 더 많은 GB 보충 인코딩 집합이 존재하는데, 여기에는 정보 교환을 위한 중국 한자 집합의 두 번째 보충 집합인 GB/T 7589와 정보 교환을 위한 중국 한자 집합의 네 번째 보충 집합인 GB/T 7590이 포함되며, 이는 동일한 위코드(qūwèi encoding) 형식([변이 한자]에 추가 [Variant Chinese characters|변이 문자])을 제공하지만(나중에 ISO-2022-CN에서 사용), GB/T 2312에 인코딩된 문자들과는 관련이 없다.
GB 2312 행별 문자 범위
GB/T 2312는 현대 중국어 텍스트 사용의 99.99% 이상을 포괄하지만 역사적인 텍스트와 많은 이름은 범위 밖에 남아 있다. 오래된 GB 2312 표준은 6,763개의 한자(두 가지 수준: 첫 번째는 읽기 순서, 두 번째는 부수 및 획수 순서)와 기호 및 구두점, 일본어 가나, 그리스 문자, 키릴 문자, 병음, 그리고 성조 표시가 있는 두 바이트 병음 문자의 집합을 포함한다. 나중 버전인 GB/T 2312-1980에는 7,445개의 문자가 있다.
GB/T 2312의 문자는 94×94 그리드에 배열되어 있으며(ISO 2022와 같이), 각 문자의 2바이트 코드 포인트는 행(qū, 区, qū)과 해당 행 내 문자의 위치(셀, wèi; 位, wèi)를 지정하는 qūwèi(区位) 형식으로 표현된다. (이 구조는 다른 ISO-2022 기반 국가 CJK 문자 집합 표준에서 사용되는 것과 동일하다. 쿠텐과 비교해 보라.) 예를 들어 "外" (의미: 외국) 문자는 45행 66열에 위치하므로, 그 qūwèi 코드는 45-66이다.
GB 2312 행별 문자 범위
행(1에서 94까지 번호 매겨짐)은 다음과 같이 문자를 포함한다.
10–15행과 88–94행은 할당되지 않았다.
GB/T 2312-1980은 682개의 기호와 6763개의 한자를 포함한다.
GB 2312 GB/T 2312 인코딩
EUC-CN은 GB/T 2312를 다루는 프로그램에서 문자 인코딩(즉, 외부 저장용)으로 자주 사용되며, 이를 통해 ASCII와의 호환성을 유지한다. ASCII에 없는 모든 문자를 표현하기 위해 두 바이트가 사용된다. 첫 번째 바이트의 값은 0xA1–0xF7(161–247) 범위이고, 두 번째 바이트의 값은 0xA1–0xFE(161–254) 범위이다. 이 모든 범위는 ASCII를 벗어나므로, UTF-8과 마찬가지로 EUC-CN을 사용할 때 바이트가 다중 바이트 구성의 일부인지 확인할 수 있지만, 바이트가 첫 번째 바이트인지 마지막 바이트인지는 확인할 수 없다.
UTF-8과 비교하여 GB/T 2312(자체 인코딩이든 EUC-CN으로 인코딩되었든)는 저장 효율성이 더 높다. UTF-8은 한중일 한자당 3바이트를 사용하는 반면, GB/T 2312는 2바이트만 사용한다. 그러나 GB/T 2312는 유니코드만큼 많은 한자를 포괄하지 않는다.
GB 2312 GB/T 2312 인코딩
qūwèi 코드 포인트를 EUC 바이트에 매핑하려면 행 번호(또는 qū, 区)와 셀/열 번호(또는 wèi, 位) 모두에 160(0xA0)을 더한다. 코드 포인트의 행 번호에 더한 결과는 상위 바이트가 되고, 코드 포인트의 셀 번호에 더한 결과는 하위 바이트가 된다.
예를 들어, qūwèi 셀 45-66에 있는 문자 "外"를 인코딩하려면 상위 바이트는 행 번호 45를 사용하여 45+160=205=0xCD가 되고, 하위 바이트는 셀 번호 66에서 66+160=226=0xE2가 된다. 따라서 전체 인코딩은 <CD E2>이다.
GB 2312 GB/T 2312 인코딩
ISO-2022-CN은 GB/T 2312의 또 다른 인코딩 형식으로, 공식 문서에 명시된 인코딩이기도 하다. 이 인코딩은 ISO-2022 표준을 참조하며, 이 또한 ASCII에 없는 문자를 인코딩하기 위해 두 바이트를 사용한다. 그러나 ASCII의 확장 영역을 사용하는 대신, ISO-2022는 ASCII와 동일한 바이트 범위(첫 번째 바이트의 값은 0x21–0x77(33–119) 범위이고, 두 번째 바이트의 값은 0x21–0x7E(33–126) 범위)를 사용한다. 바이트 범위가 ASCII와 크게 겹치기 때문에, 문자가 ASCII 범위에 속하는지 아니면 확장 영역의 두 바이트 시퀀스의 일부인지를 나타내기 위해 특수 문자(즉, Shift Out 및 Shift In 함수)가 필요하다. 이는 텍스트를 부적절하게 처리할 경우 정보 손실을 초래할 수 있으므로 잘못된 인코딩의 위험을 초래한다.
qūwèi 코드 포인트를 ISO-2022 바이트에 매핑하려면 행 번호(또는 qū, 区)와 셀/열 번호(또는 wèi, 位) 모두에 32(0x20)를 더한다. 코드 포인트의 행 번호에 더한 결과는 상위 바이트가 되고, 코드 포인트의 셀 번호에 더한 결과는 EUC 인코딩과 유사하게 하위 바이트가 된다.
예를 들어, qūwèi 셀 45-66에 있는 문자 "外"를 인코딩하려면 상위 바이트는 행 번호 45를 사용하여 45+32=77=0x4D가 되고, 하위 바이트는 셀 번호 66에서 66+32=98=0x62가 된다. 따라서 전체 인코딩은 <4D 62>이다.
HZ는 주로 유즈넷 게시물에 사용되는 GB/T 2312의 또 다른 인코딩이다. 문자는 ISO-2022-CN과 동일한 바이트 쌍으로 표현되지만, GB 2312 텍스트 범위의 시작과 끝을 나타내는 바이트 시퀀스는 다르다.
GB 2312 코드 차트
아래 표에서 접두사 바이트 또는 코딩 바이트에 십육진수 쌍이 주어질 때, 더 작은 값(8번째 비트가 설정되지 않았거나 사용할 수 없음)은 GL(0x21-0x7E)로 인코딩될 때 사용되며, 이는 ISO-2022-CN 또는 HZ-GB-2312의 경우이다. 더 큰 값(8번째 비트가 설정됨)은 GR(0xA1-0xFE)로 인코딩되는 더 일반적인 경우에 사용되며, 이는 EUC-CN, GBK 또는 GB 18030의 경우이다. 위코드(Qūwèi) 번호는 십진법으로 주어진다.
GB/T 2312가 GR로 인코딩될 때, 두 바이트 모두 8번째 비트가 설정된다(즉, 0x7F보다 크다). GBK와 GB 18030은 확장 목적으로 첫 번째 바이트만 8번째 비트가 설정된 2바이트 코드를 사용하기도 한다. 이러한 코드는 GB/T 2312 평면 밖에 있으며, 여기에는 표로 나타나 있지 않다.
GB 2312 코드 차트
이 차트는 선행 바이트에 따른 GB/T 2312 문자 집합의 기본 평면 전체 레이아웃을 자세히 설명한다. 한자 이외의 문자에 사용되는 선행 바이트의 경우, 해당 선행 바이트 아래에 인코딩된 문자를 나열하는 이 페이지의 차트 링크가 제공된다. 한자에 사용되는 선행 바이트의 경우, 위키낱말사전의 한자 색인의 해당 섹션 링크가 제공된다.
다음 차트는 GB/T 2312, GB/T 12345 및 GB 18030의 2바이트 영역 1(GB/T 2312의 비한자 영역과 대략 일치)에서 사용 가능한 비한자 문자를 나열한다. 이들이 서로 다른 점과 GB 6345.1 및 ISO-IR-165가 이들과 다른 점을 표시한다. 다른 CJK 국가 문자 집합과의 비교를 위해 해당 문서에 상호 참조를 제공한다.
GB 2312 코드 차트
GBK 및 GB 18030의 GB/T 2312에 해당하는 부분 집합에서 가운뎃점(중국어: 间隔点, 직역: 구분점) 및 줄표(중국어: 破折号)의 유니코드 매핑(U+00B7 · middle dot 및 U+2014 — em dash)은 유니코드 컨소시엄에서 이전에 제공했던 데이터 파일인 GB2312.TXT(U+30FB ・ katakana middle dot 및 U+2015 ― horizontal bar)에 나열된 것과 다르다. 이 파일은 2011년 8월부터 더 이상 사용되지 않는 것으로 지정되었으며 2016년 9월 현재 호스팅되지 않는다.
GB 2312 코드 차트
2015년 현재, 마이크로소프트 .Net 프레임워크는 gb2312로 레이블이 지정된 데이터에서 해당 두 문자를 매핑할 때 GB 18030 매핑을 따르는 반면, ICU, iconv-1.14, php-5.6, ActivePerl-5.20, Java 1.7 및 Python 3.4는 gb2312 레이블에 따라 GB2312.TXT를 따른다. 루비 2.2는 두 구현 모두와 호환되며, 충돌하는 문자를 내부적으로 GB 18030 부분 집합으로 변환한다. W3C/WHATWG의 HTML5 사용 기술 권고는 gb2312로 레이블이 지정된 스트림에 대해 GBK 인코딩을 유추하도록 지정하며, 이는 다시 GB18030 디코더를 사용한다.
애플을 포함하여 개별 공급업체에서 정의하고 사용한 다른 매핑도 있다.
이 행에는 구두점, 수학 연산자 및 기타 기호가 포함되어 있다. 다음 표는 이들 GB/T 2312 문자에 대한 GB 18030 매핑을 먼저 보여주고, 그 다음 다른 문서화된 매핑을 보여준다.
GB 2312 코드 차트
이 행에는 다양한 유형의 목록 표식이 포함되어 있다. 로마 숫자의 소문자 형태는 원래 GB/T 2312나 GB/T 12345에는 포함되지 않았지만, 윈도우 코드 페이지 936과 GB 18030 모두에 포함되어 있다. 유로 기호 또한 GB 18030에 의해 추가되었다.
이 행에는 ISO 646-CN(GB/T 1988-80)이 포함되어 있으며, 이는 ASCII의 국가적 대응물이다. KS X 1001의 3행과 비교해 보라. 이 행은 대한민국의 ISO 646 버전과 동일하게 처리하며, JIS X 0208의 3행 및 KPS 9566의 3행과 비교해 보라. 이들은 영숫자 부분 집합만 포함하지만 동일한 레이아웃을 사용한다. 다음 차트는 ISO 646-CN을 나열한다.
GB 2312 코드 차트
EUC-CN(및 상위 집합인 GB 18030)과 같이 ASCII와의 조합을 허용하는 인코딩에서 사용될 때, 이 문자들은 일반적으로 전각 문자로 구현되므로, 아래에 표시된 반각 및 전각 문자 블록으로의 매핑이 사용된다. GB 6345.1 또한 이 행을 전각으로 처리하며, 10행으로 반각 형태(위와 동일)를 추가한다. 애플은 이 행을 아래와 같이 대부분 전각 코드 포인트에 매핑하지만, 위안 기호는 위와 같이 비전각 매핑을 사용한다.
이 집합에는 일본어를 작성하기 위한 히라가나가 포함되어 있다.
이 행과 일치하는 JIS X 0208의 4행, 그리고 동일한 레이아웃을 사용하지만 다른 행에 있는 KS X 1001의 10행 및 KPS 9566과 비교해 보라.
이 집합에는 일본어를 작성하기 위한 가타카나가 포함되어 있다. 그러나 가타카나 텍스트에 사용되며 JIS X 0208의 1행에 포함된 일본어 장음 마크는 GB/T 2312에 포함되지 않는다. GBK 및 GB 18030에는 0xA960의 주 GB/T 2312 평면 외부에 추가된다.
이 행과 일치하는 JIS X 0208의 5행, 그리고 동일한 레이아웃을 사용하지만 다른 행에 있는 KS X 1001의 11행 및 KPS 9566과 비교해 보라.
이 행에는 최종 시그마나 발음 구별 부호가 없는 현대 그리스 문자에 대한 기본 지원이 포함되어 있다.
강조 표시된 문자는 세로 쓰기를 위한 구두점의 표시 형식으로, GB/T 2312 자체에는 포함되지 않지만, GB/T 12345, 윈도우 코드 페이지 936, Mac OS 간체자, 및 GB 18030의 이 행에 포함되어 있다. 이들은 "GB 2312의 표준 확장"으로 간주된다. 반대로, ISO-IR-165는 이 행에 패턴화된 준그래픽 문자를 포함하며(유니코드에 정확히 대응하는 문자는 거의 없음), 세로 확장에 사용되는 코드 위치와 충돌한다.
세로 형태가 포함되지 않을 때 이 행과 일치하는 JIS X 0208의 6행과 비교해 보라. 또한 동일한 레이아웃에 동일한 그리스 문자가 포함되어 있지만 세로 형태 대신 로마 숫자를 추가하는 KPS 9566의 6행과 비교해 보라. 로마 숫자를 먼저 포함하기 위해 그리스 문자를 오프셋하는 KS X 1001의 5행과는 대조된다.
이 집합에는 33개의 키릴 문자 양쪽 대소문자가 포함되어 있으며, 현대 러시아어 및 불가리아어를 작성하기에 충분하지만, 다른 형태의 키릴 문자에는 추가 문자가 필요하다.
이 행과 일치하는 JIS X 0208의 7행과 비교해 보라. 또한 동일한 레이아웃을 사용하지만 다른 행에 있는 KS X 1001의 12행 및 KPS 9566의 5행과 비교해 보라.
이 행에는 ASCII 문자(3행에 있음)를 제외한 주음부호 및 병음 문자가 포함되어 있다. 강조 표시된 문자는 기본 GB 2312 집합에는 없지만 GB 6345.1에 의해 추가된 문자이며, GB/T 12345, 윈도우 코드 페이지 936, Mac OS 간체자 및 GB 18030에도 포함되어 있다. 이들은 "GB 2312의 표준 확장"으로 간주된다.
GB 6345.1은 이 행의 병음을 전각으로 처리하고, 11행에 반각 형태를 포함한다. GB 18030은 이를 따르지 않는다.
GB 2312 수정
GB 5007.1-85 24×24 비트맵 글꼴 정보 교환용 한자 집합(중국어: 信息交换用汉字 24x24 点阵字模集)은 GB/T 2312를 기반으로 한 가장 초기 글꼴 템플릿으로, 다음을 포함한 수정 및 확장을 특징으로 한다.
GB/T 2312는 수정 사항이 없었지만, 이러한 수정 사항은 GB/T 12345를 포함하여 GB/T 2312를 기반으로 하는 글꼴 템플릿에 포함되어 있으며, 그 상위 집합인 GBK 및 GB 18030도 이러한 수정 사항을 포함한다. GB/T 2312는 ISO-IR-165에도 사용된다.
반대연구
정치에서 상대방 조사(opposition research) 또는 상대방 정보 조사(oppo research)는 정치적 상대방이나 다른 적대자에 대한 정보를 수집하여 그들의 신뢰를 떨어뜨리거나 약화시키는 데 사용하는 관행이다. 이 정보에는 전기, 법률, 전과, 병력, 교육, 재정 기록 또는 활동뿐만 아니라 이전 미디어 보도 또는 정치인의 투표 기록이 포함될 수 있다. 상대방 조사는 또한 트래커를 사용하여 개인을 추적하고 그들의 활동이나 정치 연설을 기록하는 것을 포함할 수 있다.
이 조사는 보통 출마 의사 발표와 실제 선거 사이 기간에 수행되지만, 정당들은 수십 년을 아우르는 장기 데이터베이스를 유지한다. 이 관행은 전술적 기동이자 비용 절감 조치이기도 하다. 이 용어는 정보 수집뿐만 아니라 네거티브 캠페인의 한 구성 요소로서 정보가 어떻게 활용되는지를 지칭하는 데 자주 사용된다.
반대연구 기원과 역사
기원전 1세기, 마르쿠스 툴리우스 키케로는 상대방에게 해로운 정보를 수집하여 그들을 공격하는 데 사용했다고 전해진다. 그는 한 정치적 상대방인 루키우스 세르기우스 카틸리나를 다른 아내를 얻기 위해 아내를 살해했다고 비난했다. 그는 필리피카이로 알려진 연설에서 마르쿠스 안토니우스를 공격했고, 결국 안토니우스는 그의 머리와 오른손을 잘라 로마 포럼에 전시하게 했다.
상대방 조사는 또한 기원전 5세기에 손무가 출간한 손자병법과 같은 고대 문헌에서 볼 수 있듯이 군사 계획에서 기원한다. 전사를 위한 이 지침서는 상대방의 약점을 이해하고, 스파이를 사용하며, 약한 순간에 공격해야 할 필요성을 설명한다.
18세기 잉글랜드와 아일랜드섬에서는 상대방 조사가 휘그당과 토리당 사이의 추문 조장 팸플릿 전쟁 형태로 나타났다. 대니얼 디포, 조너선 스위프트, 헨리 필딩과 같은 작가들이 종종 가명을 사용하여 참여했다. 이러한 강력한 공격의 전통은 나중에 토머스 페인과 벤저민 프랭클린과 같은 작가들이 상대방 조사를 수행하고 그 결과를 발표했던 아메리카 식민지에서도 재현되었다.
반대연구 기원과 역사
"상대방 조사"라는 문구가 뉴욕 타임즈에 처음 등장한 것은 1971년 12월 17일, 여성 공화당 자원봉사자에 의한 에드먼드 머스키 대통령 선거 운동 침투를 묘사하는 기사에서였다: "...워싱턴 신문에 공화당 본부의 '상대방 조사' 프로그램에 대한 기사가 실렸다..."
상대방 조사는 1970년대에 닉슨 행정부의 연설작가였던 켄 카치지안이 닥치는 대로 그때그때마다 "뒤죽박죽"하는 방식 대신, 미래의 선거에 대비하여 공화당이 개인에 대한 파일을 유지할 것을 제안하면서 체계화되었다.
반대연구 방법
상대방 조사는 캠페인의 규모와 자금, 후보자의 윤리, 그리고 수행되는 시대에 따라 엄청나게 달라진다. 정보 수집은 세 가지 주요 범주로 분류될 수 있다: 정보의 자유법에 의해 가능해진 오픈 소스 조사, 비밀 작전 또는 "트레이드크래프트", 그리고 정보원 인간 시스템 유지. 점점 더 전자 기록의 데이터 마이닝이 사용된다. 정보는 미래 사용을 위해 저장되고 다양한 방식으로 유포된다. 지방 선거에서는 때때로 상대방의 모든 공개 성명과 투표 기록을 검토하는 직원이 전담하지만, 다른 선거에서는 상대방을 부정적인 시각으로 제시할 미리 정해진 "내러티브"를 진전시켜 대중을 의도적으로 오도하기 위한 역정보 또는 "블랙 옵스" 기술을 사용하는 소문 캠페인을 시작한다.
또 다른 기법은 상대방의 작전에 침투하여 유급 정보원을 배치하는 것이다. "회색 선전" 기법은 전략사무국과 같은 정보 기관이 제2차 세계 대전 동안 사용했던 역정보 전술에서 물려받은 기술로, 출처가 제대로 식별되지 않고 해로운 정보를 뉴스 미디어에 공개하는 데 자주 사용된다.
반대연구 방법
정당 활동가들 사이의 파일 공유는 매우 흔하다. 2008년 대통령 선거에서 공화당 부통령 후보 세라 페일린에 대한 상대방 조사 자료가 정치 블로그 사이트인 Politico.com에 전문이 게시되었다. 이 파일은 2006년 알래스카 주지사 선거에서 그녀의 상대였던 토니 놀스의 직원들이 작성한 것이었다.
"오포 덤프(Oppo dumps)"는 정치 캠페인에서 공개 기록, 당 기록 보관소 및 개인 소장품의 비디오 영상, 그리고 활동가들이 수집한 사적 정보를 포함하여 해로운 정보를 언론 매체에 체계적으로 제공하는 데 사용된다. 많은 프라임 타임 텔레비전 및 라디오 뉴스 해설은 이러한 당 생성 자료의 공급에 의존하는데, 이는 무료이므로 조사 기자에게 비용을 지불하는 것보다 비용 효율적이기 때문이다.
상대방 조사로부터 이득을 얻는 후보자 및 현직자들은 연구원에 대해 형사 고발이 제기될 경우 그럴듯한 부인을 보장하기 위해 캠페인의 운영 및 전술에 대해 알지 못하는 것을 선택하는 경우가 많다.
반대연구 방법
또 다른 기술은 정보나 인력을 언론 매체 내에 배치하는 것이다. 종종 정보는 캠페인 자금으로 운영되는 "트래커 프로그램"에서 수집된 비디오 영상인데, 여기에서 비디오그래퍼들은 후보자의 일정을 추적하여 가능한 한 많은 발언을 기록한다. 이는 그들이 말하는 모든 것이 그들에게 불리하게 사용될 수 있고 사용될 것이기 때문이다. 이는 전 상원의원 조지 앨런의 "마카카 순간"의 경우와 같았다. 2006년 선거에서 버지니아 상원의원 조지 앨런은 상원의원이 비디오그래퍼/상대방 조사원을 "마카카" 또는 원숭이라고 부르는 비디오테이프 때문에 낙선했다. 이 이름은 인종차별적인 비방으로 간주되었고, 이 사건이 주류 언론과 인터넷에 널리 방송되자 앨런 캠페인은 그 피해를 극복할 수 없었다.
2021년 뉴저지 주지사 선거에서 필 머피 주지사의 캠페인을 위해 일하는 트래커는 공화당 후보 잭 시아타렐리의 공개 행사에 정기적으로 참석하여 잠재적인 상대방 조사 용도로 그의 발언을 기록했다. 시아타렐리 캠페인은 트래커의 역할을 인지하고 타운홀 미팅에서 그를 공개적으로 인정하기로 결정했는데, 이는 현대 캠페인 전략에서 트래커가 얼마나 일상적이고 필수적인 존재가 되었는지를 보여주는 지표이다.
반대연구 방법
2005년 미국 정치학회에서 발간된 디지털 미디어 전략 분석에서는 새로운 기술이 "정치 엘리트"가 데이터베이스 및 인터넷 기술을 사용하여 상대방 조사를 더 쉽게 할 수 있도록 하지만, 개인 정보 보호 옹호자들을 격분시키고 인터넷 사용자들이 거의 이해하지 못하는 은밀한 데이터 마이닝 기술을 사용한다고 보았다. 정치적 행위자, 정책 옵션, 그리고 공적 영역에서의 행위자와 의견의 다양성에 대한 데이터는 "더 풍부"해지지만, "사람들이 실질적으로 참여하지 않고도 정치적으로 표현할 수 있는 용이성" 때문에 시민 의식은 "더 얇아"진다고 보았다.
페이스북 사진은 힐다 솔리스를 교체하기 위한 2009년 캘리포니아 제32회 연방 하원 특별 선거에서 상대방 조사원의 도구가 되었다. 선두 주자인 민주당 길 세딜로는 26세 에마누엘 플레이테즈를 겨냥한 우편물을 보냈는데, 플레이테즈의 페이스북 사진들을 묶어 그가 과음으로 파티를 즐기고 갱단과 어울린다고 시사했다. 우편물의 텍스트는 플레이테즈가 라틴계 무대 배우와 함께 포즈를 취하고 라틴계 유권자 등록 운동 손 사인을 사용하는 것이 "갱 사인을 플래싱"하는 것이라고 시사했다.