OpenAI Operator was an AI agent developed by OpenAI, capable of autonomously performing tasks through web browser interactions, including filling forms, placing online orders, scheduling appointments, and other repetitive browser-based tasks. It uses OpenAI's advanced models to expand practical automation capabilities for users in daily activities. Operator was launched on January 23, 2025. It was released as a limited-access research preview to ChatGPT Pro-tier subscribers in the United States on February 1, 2025, with future plans to broaden availability. Operator was deprecated after the release of ChatGPT agent, and shut down on August 31, 2025. == Performance and limitations == In benchmark assessments, Operator achieved notable success, scoring 38.1% on OSWorld benchmarks (OS-level tasks) and 58.1% on WebArena benchmarks (web interactions). However, it did not reach human-level accuracy and faced limitations with intricate user interfaces and extended workflows. == Safety and privacy == OpenAI emphasized privacy and safety measures within Operator, including stringent data protection protocols and built-in safety checks designed to prevent unauthorized sensitive actions or information misuse. == Availability == Initially, Operator was only available to ChatGPT Pro subscribers in the U.S., with plans for broader availability to Plus, Team, and Enterprise users in the future.
AI agent
In the context of generative artificial intelligence, AI agents (also referred to as compound AI systems or agentic AI) are a class of intelligent agents that can pursue goals, use tools, and take actions with varying degrees of autonomy. In practice, they usually operate within human-defined objectives, constraints, and available tools. == Overview == AI agents possess several key attributes, including goal-directed behavior, natural language interfaces, the capacity to use external tools, and the ability to perform multi-step tasks. Their control flow is frequently driven by large language models (LLMs). Agent systems may also include memory components, planning logic, tool interfaces, and orchestration software for coordinating agent components. AI agents do not have a standard definition. NIST describes agentic AI as an emerging area requiring standards for secure operation, interoperability, and reliable interaction with external systems. A common application of AI agents is task automation: for example, booking travel plans based on a user's prompted request. Companies such as Google, Microsoft and Amazon Web Services have offered platforms for deploying pre-built AI agents. Several protocols have been proposed for standardizing inter-agent communication, with examples including the Model Context Protocol, Gibberlink, and many others. Some of these protocols are also used for connecting agents to external applications. In December 2025, Linux Foundation announced the formation of the Agentic AI Foundation (AAIF), with the goal of ensuring agentic AI evolves transparently and collaboratively. == History == AI agents have been traced back to research from the 1990s, with Harvard professor Milind Tambe noting that the definition of an AI agent was not clear at the time. Researcher Andrew Ng has been credited with spreading the term "agentic" to a wider audience in 2024. == Training and testing == Researchers have attempted to build world models and reinforcement learning environments to train or evaluate AI agents. For example, video games such as Minecraft and No Man's Sky as well as replicas of company websites, have also been used for training such agents. == Autonomous capabilities == The Financial Times compared the autonomy of AI agents to the SAE classification of self-driving cars, likening most applications to level 2 or level 3, with some achieving level 4 in highly specialized circumstances, and level 5 being theoretical. == Cognitive architecture == The following are some internal design options for reasoning within an agent: Retrieval-augmented generation ReAct (Reason + Act) pattern is an iterative process in which an AI agent alternates between reasoning and taking actions, receives observations from the environment or external tools, and integrates these observations into subsequent reasoning steps. Reflexion, which uses an LLM to create feedback on the agent's plan of action and stores that feedback in a memory cache. A tool/agent registry, for organizing software functions or other agents that the agent can use. One-shot model querying, which queries the model once to create the plan of action. === Reference architecture === Ken Huang proposed an AI agent reference architecture, which consists of seven interconnected layers, with each layer building on the functionality of the layers beneath it: Layer 1: Foundation models - provide the core AI engines to power agent capabilities. Layer 2: Data operations - manage the complex data infrastructure required for AI agent operations, including Vector database, data loaders, RAG. Layer 3: Agent frameworks - sophisticated software and tools that simplify the development and management of the AI agents. Layer 4: Deployment and infrastructure - provide the robust technical foundation for running AI agents. Layer 5: Evaluation and observability - focus on assessing the safety and performance of AI agents. Layer 6: Security and compliance - a crucial protective framework ensuring AI agents operate safely, securely, and conform to regulatory boundaries. At this layer security and compliance features embedded into all the AI agent stack layers are integrated together. Layer 7: Agent ecosystem - represents the AI agents' interface with real-world applications and users. == Orchestration patterns == To execute complex tasks, autonomous agents are often integrated with other agents or specialized tools. These configurations, known as orchestration patterns or workflows, include the following: Prompt chaining: A sequence where the output of one step serves as the input for the next. Routing: The classification of an input to direct it to a specialized downstream task or tool. Parallelization: The simultaneous execution of multiple tasks. Sequential processing: A fixed, linear progression of tasks through a predefined pipeline. Planner-critic: An iterative pattern where one agent generates a proposal and another evaluates it to provide feedback for refinement. == Multimodal AI agents == In addition to large language models (LLMs), vision-language models (VLMs) and multimodal foundation models can be used as the basis for agents. In September 2024, Allen Institute for AI released an open-source vision-language model. Nvidia released a framework for developers to use VLMs, LLMs and retrieval-augmented generation for building AI agents that can analyze images and videos, including video search and video summarization. Microsoft released a multimodal agent model – trained on images, video, software user interface interactions, and robotics data – that the company claimed can manipulate software and robots. == Applications == As of April 2025, per the Associated Press, there are few real-world applications of AI agents. As of June 2025, per Fortune, many companies are primarily experimenting with AI agents. The Information divided AI agents into seven archetypes: business-task agents, for acting within enterprise software; conversational agents, which act as chatbots for customer support; research agents, for querying and analyzing information (such as OpenAI Deep Research); analytics agents, for analyzing data to create reports; software developer or coding agents (such as Cursor); domain-specific agents, which include specific subject matter knowledge; and web browser agents (such as OpenAI Operator). By mid-2025, AI agents have been used in video game development, gambling (including sports betting), cryptocurrency wallets (including cryptocurrency trading and meme coins) and social media. In August 2025, New York Magazine described software development as the most definitive use case of AI agents. Likewise, by October 2025, noting a decline in expectations, The Information noted AI coding agents and customer support as the primary use cases by businesses. In November 2025, The Wall Street Journal reported that few companies that deployed AI agents have received a return on investment. === Applications in government === Several government bodies in the United States and United Kingdom have deployed or announced the deployment of agents, at the local and national level. The city of Kyle, Texas deployed an AI agent from Salesforce in March 2025 for 311 customer service. In November 2025, the Internal Revenue Service stated that it would use Agentforce, AI agents from Salesforce, for the Office of Chief Counsel, Taxpayer Advocate Services and the Office of Appeals. That same month, Staffordshire Police announced that they would trial Agentforce agents for handling non-emergency 101 calls in the United Kingdom starting in 2026. In December 2025, the Department of Neighborhoods in Detroit, Michigan, in partnership with a local business, deployed a pilot project in two Detroit districts for an AI agent to be used for customer service calls. In February 2025, Thomas Shedd, the director of the Technology Transformation Services, proposed using AI coding agents across the United States federal government. A recruiter for the Department of Government Efficiency proposed in April 2025 to use AI agents to automate the work of about 70,000 United States federal government employees, as part of a startup with funding from OpenAI and a partnership agreement with Palantir. This proposal was criticized by experts for its impracticality, if not impossibility, and the lack of corresponding widespread adoption by businesses. In December 2025, the Food and Drug Administration announced that it would offer "agentic AI capabilities" to its staff for "meeting management, pre-market reviews, review validation, post-market surveillance, inspections and compliance and administrative functions." That same month, the United States Department of Defense launched GenAI.mil, an internal platform for American military personnel to use generative AI-based applications based on Google Gemini, including "intelligent agentic workflows". Defense Secretary Pete Hegseth listed applications such as "[conducting] deep r
Data processing unit
A data processing unit (DPU) is a programmable computer processor that tightly integrates a general-purpose CPU with network interface hardware. They are also occasionally called "IPUs" (infrastructure processing unit) or "SmartNICs". They can be used in place of traditional NICs to relieve the main CPU of complex networking responsibilities and other "infrastructural" duties; although their features vary, they may be used to perform encryption/decryption, serve as a firewall, handle TCP/IP, process HTTP requests, or even function as a hypervisor or storage controller. These devices can be attractive to cloud computing providers whose servers might otherwise spend a significant amount of CPU time on these tasks, cutting into the cycles they can provide to guests. They see use in other kinds of data center environments as well due to their improved power consumption efficiency for routine networking tasks compared to general-purpose CPUs.
Mivar-based approach
The Mivar-based approach is a mathematical tool for designing artificial intelligence (AI) systems. Mivar (Multidimensional Informational Variable Adaptive Reality) was developed by combining production and Petri nets. The Mivar-based approach was developed for semantic analysis and adequate representation of humanitarian epistemological and axiological principles in the process of developing artificial intelligence. The Mivar-based approach incorporates computer science, informatics and discrete mathematics, databases, expert systems, graph theory, matrices and inference systems. The Mivar-based approach involves two technologies: Information accumulation is a method of creating global evolutionary data-and-rules bases with variable structure. It works on the basis of adaptive, discrete, mivar-oriented information space, unified data and rules representation, based on three main concepts: “object, property, relation”. Information accumulation is designed to store any information with possible evolutionary structure and without limitations concerning the amount of information and forms of its presentation. Data processing is a method of creating a logical inference system or automated algorithm construction from modules, services or procedures on the basis of a trained mivar network of rules with linear computational complexity. Mivar data processing includes logical inference, computational procedures and services. Mivar networks allow us to develop cause-effect dependencies (“If-then”) and create an automated, trained, logical reasoning system. Representatives of Russian association for artificial intelligence (RAAI) – for example, V. I. Gorodecki, doctor of technical science, professor at SPIIRAS and V. N. Vagin, doctor of technical science, professor at MPEI declared that the term is incorrect and suggested that the author should use standard terminology. == History == While working in the Russian Ministry of Defense, O. O. Varlamov started developing the theory of “rapid logical inference” in 1985. He was analyzing Petri nets and productions to construct algorithms. Generally, mivar-based theory represents an attempt to combine entity-relationship models and their problem instance – semantic networks and Petri networks. The abbreviation MIVAR was introduced as a technical term by O. O. Varlamov, Doctor of Technical Science, professor at Bauman MSTU in 1993 to designate a “semantic unit” in the process of mathematical modeling. The term has been established and used in all of his further works. The first experimental systems operating according to mivar-based principles were developed in 2000. Applied mivar systems were introduced in 2015. == Mivar == Mivar is the smallest structural element of discrete information space. == Object-property-relation == Object-Property-Relation (VSO) is a graph, the nodes of which are concepts and arcs are connections between concepts. Mivar space represents a set of axes, a set of elements, a set of points of space and a set of values of points. A = { a n } , n = 1 , … , N , {\displaystyle A=\{a_{n}\},n=1,\ldots ,N,} where: A {\displaystyle A} is a set of mivar space axis names; N {\displaystyle N} is a number of mivar space axes. Then: ∀ a n ∃ F n = { f n i n } , n = 1 , … , N , i n = 1 , … , I n , {\displaystyle \forall a_{n}\exists F_{n}=\{f_{{ni}_{n}}\},n=1,\ldots ,N,i_{n}=1,\ldots ,I_{n},} where: F n {\displaystyle F_{n}} is a set of axis a n {\displaystyle a_{n}} elements; i n {\displaystyle i_{n}} is a set F n {\displaystyle F_{n}} element identifier; I n = | F n | . {\displaystyle I_{n}=|F_{n}|.} F n {\displaystyle F_{n}} sets form multidimensional space: M = F 1 × F 2 × ⋯ × F n . {\displaystyle M=F_{1}\times F_{2}\times \cdots \times F_{n}.} m = ( i 1 , i 2 , … , i N ) , {\displaystyle m=(i_{1},i_{2},\ldots ,i_{N}),} where: m ∈ M {\displaystyle m\in M} ; m {\displaystyle m} is a point of multidimensional space; ( i 1 , i 2 , … , i N ) {\displaystyle (i_{1},i_{2},\ldots ,i_{N})} are coordinates of point m {\displaystyle m} . There is a set of values of multidimensional space points of M {\displaystyle M} : C M = { c i 1 , i 2 , … , i N ∣ i 1 = 1 , … , I 1 , i 2 = 1 , … , I 2 , … , i n = 1 , … , I N } , {\displaystyle C_{M}=\{c_{i_{1},i_{2},\ldots ,i_{N}}\mid i_{1}=1,\ldots ,I_{1},i_{2}=1,\ldots ,I_{2},\ldots ,i_{n}=1,\ldots ,I_{N}\},} where: c i 1 , i 2 , … , i N {\displaystyle c_{i_{1},i_{2},\ldots ,i_{N}}} is a value of the point of multidimensional space M {\displaystyle M} is a value of the point of multidimensional space ( i 1 , i 2 , … , i N ) {\displaystyle (i_{1},i_{2},\ldots ,i_{N})} . For every point of space M {\displaystyle M} there is a single value from C M {\displaystyle C_{M}} set or there is no such value. Thus, C M {\displaystyle C_{M}} is a set of data model state changes represented in multidimensional space. To implement a transition between multidimensional space and set of points values the relation μ {\displaystyle \mu } has been introduced: C x = μ ( M x ) , {\displaystyle C_{x}=\mu (M_{x}),} where: M x ⊆ M ; {\displaystyle M_{x}\subseteq M;} M x = F 1 x × F 2 x × ⋯ × F N x . {\displaystyle M_{x}=F_{1x}\times F_{2x}\times \cdots \times F_{Nx}.} To describe a data model in mivar information space it is necessary to identify three axes: The axis of relations « O {\displaystyle O} »; The axis of attributes (properties) « S {\displaystyle S} »; The axis of elements (objects) of subject domain « V {\displaystyle V} ». These sets are independent. The mivar space can be represented by the following tuple: ⟨ V , S , O ⟩ {\displaystyle \langle V,S,O\rangle } Thus, mivar is described by « V S O {\displaystyle VSO} » formula, in which « V {\displaystyle V} » denotes an object or a thing, « S {\displaystyle S} » denotes properties, « O {\displaystyle O} » variety of relations between other objects of a particular subject domain. The category “Relations” can describe dependencies of any complexity level: formulae, logical transitions, text expressions, functions, services, computational procedures and even neural networks. A wide range of capabilities complicates description of modeling interconnections, but can take into consideration all the factors. Mivar computations use mathematical logic. In a simplified form they can be represented as implication in the form of an "if…, then …” formula. The result of mivar modeling can be represented in the form of a bipartite graph binding two sets of objects: source objects and resultant objects. == Mivar network == Mivar network is a method for representing objects of the subject domain and their processing rules in the form of a bipartite directed graph consisting of objects and rules. A Mivar network is a bipartite graph that can be described in the form of a two-dimensional matrix, in that records information about the subject domain of the current task. Generally, mivar networks provide formalization and representation of human knowledge in the form of a connected multidimensional space. That is, a mivar network is a method of representing a piece of mivar space information in the form of a bipartite, directed graph. The mivar space information is formed by objects and connections, which in total represent the data model of the subject domain. Connections include rules for objects processing. Thus, a mivar network of a subject domain is a part of the mivar space knowledge for that domain. The graph can consist of objects-variables and rules-procedures. First, two lists are made that form two nonintersecting partitions: the list of objects and the list of rules. Objects are denoted by circles. Each rule in a mivar network is an extension of productions, hyper-rules with multi-activators or computational procedures. It is proved that from the perspective of further processing, these formalisms are identical and in fact are nodes of the bipartite graph, denoted by rectangles. === Multi-dimensional binary matrices === Mivar networks can be implemented on single computing systems or service-oriented architectures. Certain constraints restrict their application, in particular, the dimension of matrix of linear matrix method for determining logical inference path on the adaptive rule networks. The matrix dimension constraint is due to the fact that implementation requires sending a general matrix to multiple processors. Since every matrix value is initially represented in symbol form, the amount of sent data is crucial when obtaining, for example, 10000 rules/variables. Classical mivar-based method requires storing three values in each matrix cell: 0 – no value; x – input variable for the rule; y – output variable for the rule. The analysis of possibility of firing a rule is separated from determining output variables according to stages after firing the rule. Consequently, it is possible to use different matrices for “search for fired rules” and “setting values for output variables”. This allowsthe use of multidimensional binary m
History of artificial life
Humans have considered and tried to create non-biological life for at least 3,000 years. As seen in tales ranging from Pygmalion to Frankenstein, humanity has long been intrigued by the concept of artificial life. == Pre-computer == The earliest examples of artificial life involve sophisticated automata constructed using pneumatics, mechanics, and/or hydraulics. The first automata were conceived during the third and second centuries BC and these were demonstrated by the theorems of Hero of Alexandria, which included sophisticated mechanical and hydraulic solutions. Many of his notable works were included in the book Pneumatics, which was also used for constructing machines until early modern times. In 1490, Leonardo da Vinci also constructed an armored knight, which is considered the first humanoid robot in Western civilization. Other early famous examples include al-Jazari's humanoid robots. This Arabic inventor once constructed a band of automata, which can be commanded to play different pieces of music. There is also the case of Jacques de Vaucanson's artificial duck exhibited in 1735, which had thousands of moving parts and one of the first to mimic a biological system. The duck could reportedly eat and digest, drink, quack, and splash in a pool. It was exhibited all over Europe until it fell into disrepair. In the late 1600s, following René Descartes' claims that animals could be understood as purely physical machines, there was increasing interest in the question of whether a machine could be designed that, like an animal, could generate offspring (a self-replicating machine). However, it wasn't until the invention of cheap computing power that artificial life as a legitimate science began in earnest, steeped more in the theoretical and computational than the mechanical and mythological. == 1950s–1970s == One of the earliest thinkers of the modern age to postulate the potentials of artificial life, separate from artificial intelligence, was math and computer prodigy John von Neumann. At the Hixon Symposium, hosted by Linus Pauling in Pasadena, California in the late 1940s, von Neumann delivered a lecture titled "The General and Logical Theory of Automata." He defined an "automaton" as any machine whose behavior proceeded logically from step to step by combining information from the environment and its own programming, and said that natural organisms would in the end be found to follow similar simple rules. He also spoke about the idea of self-replicating machines. He postulated a made-up of a control computer, a construction arm, and a long series of instructions, floating in a lake of parts. By following the instructions that were part of its own body, it could create an identical machine. He followed this idea by creating (with Stanislaw Ulam) a purely logic-based automaton, not requiring a physical body but based on the changing states of the cells in an infinite grid – the first cellular automaton. It was extraordinarily complicated compared to later CAs, having hundreds of thousands of cells which could each exist in one of twenty-nine states, but von Neumann felt he needed the complexity in order for it to function not just as a self-replicating "machine", but also as a universal computer as defined by Alan Turing. This "universal constructor" read from a tape of instructions and wrote out a series of cells that could then be made active to leave a fully functional copy of the original machine and its tape. Von Neumann worked on his automata theory intensively right up to his death, and considered it his most important work. Homer Jacobson illustrated basic self-replication in the 1950s with a model train set – a seed "organism" consisting of a "head" and "tail" boxcar could use the simple rules of the system to consistently create new "organisms" identical to itself, so long as there was a random pool of new boxcars to draw from. Edward F. Moore proposed "Artificial Living Plants", which would be floating factories which could create copies of themselves. They could be programmed to perform some function (extracting fresh water, harvesting minerals from seawater) for an investment that would be relatively small compared to the huge returns from the exponentially growing numbers of factories. Freeman Dyson also studied the idea, envisioning self-replicating machines sent to explore and exploit other planets and moons, and a NASA group called the Self-Replicating Systems Concept Team performed a 1980 study on the feasibility of a self-building lunar factory. University of Cambridge professor John Horton Conway invented the most famous cellular automaton in the 1960s. He called it the Game of Life, and publicized it through Martin Gardner's column in Scientific American magazine. Norwegian-Italian mathematician Nils Aall Barricelli, who worked mainly at US institutions, was a pioneer in computer based simulation of biological processes such as symbiogenesis and evolution. == 1970s–1980s == Philosophy scholar Arthur Burks, who had worked with von Neumann (and indeed, organized his papers after Neumann's death), headed the Logic of Computers Group at the University of Michigan. He brought the overlooked views of 19th century American thinker Charles Sanders Peirce into the modern age. Peirce was a strong believer that all of nature's workings were based on logic (though not always deductive logic). The Michigan group was one of the few groups still interested in alife and CAs in the early 1970s; one of its students, Tommaso Toffoli argued in his PhD thesis that the field was important because its results explain the simple rules that underlay complex effects in nature. Toffoli later provided a key proof that CAs were reversible, just as the true universe is considered to be. Christopher Langton was an unconventional researcher, with an undistinguished academic career that led him to a job programming DEC mainframes for a hospital. He became enthralled by Conway's Game of Life, and began pursuing the idea that the computer could emulate living creatures. After years of study, he began attempting to actualize Von Neumann's CA and the work of Edgar F. Codd, who had simplified Von Neumann's original twenty-nine state monster to one with only eight states. He succeeded in creating the first self-replicating computer organism in October 1979, using only an Apple II desktop computer. He entered Burks' graduate program at the Logic of Computers Group in 1982, at the age of 33, and helped to found a new discipline. Langton's official conference announcement of Artificial Life I was the earliest description of a field which had previously barely existed: Artificial life is the study of artificial systems that exhibit behavior characteristic of natural living systems. It is the quest to explain life in any of its possible manifestations, without restriction to the particular examples that have evolved on earth. This includes biological and chemical experiments, computer simulations, and purely theoretical endeavors. Processes occurring on molecular, social, and evolutionary scales are subject to investigation. The ultimate goal is to extract the logical form of living systems. Microelectronic technology and genetic engineering will soon give us the capability to create new life forms in silico as well as in vitro. This capacity will present humanity with the most far-reaching technical, theoretical and ethical challenges it has ever confronted. The time seems appropriate for a gathering of those involved in attempts to simulate or synthesize aspects of living systems. Ed Fredkin founded the Information Mechanics Group at MIT, which united Toffoli, Norman Margolus, and Charles Bennett. This group created a computer especially designed to execute cellular automata, eventually reducing it to the size of a single circuit board. This "cellular automata machine" allowed an explosion of alife research among scientists who could not otherwise afford sophisticated computers. In 1982, computer scientist named Stephen Wolfram turned his attention to cellular automata. He explored and categorized the types of complexity displayed by one-dimensional CAs, and showed how they applied to natural phenomena such as the patterns of seashells and the nature of plant growth. Norman Packard, who worked with Wolfram at the Institute for Advanced Study, used CAs to simulate the growth of snowflakes, following very basic rules. Computer animator Craig Reynolds similarly used three simple rules to create recognizable flocking behaviour in a computer program in 1987 to animate groups of boids. With no top-down programming at all, the boids produced lifelike solutions to evading obstacles placed in their path. Computer animation has continued to be a key commercial driver of alife research as the creators of movies attempt to find more realistic and inexpensive ways to animate natural forms such as plant life, animal movement, hair growth, and complicated org
Screen space ambient occlusion
Screen space ambient occlusion (SSAO) is a computer graphics technique for efficiently approximating the ambient occlusion effect in real time. It was developed by Vladimir Kajalin while working at Crytek and was used for the first time in 2007 by the video game Crysis, also developed by Crytek. == Implementation == The algorithm is implemented as a pixel shader, analyzing the scene depth buffer which is stored in a texture. For every pixel on the screen, the pixel shader samples the depth values around the current pixel and tries to compute the amount of occlusion from each of the sampled points. In its simplest implementation, the occlusion factor depends only on the depth difference between sampled point and current point. Without additional smart solutions, such a brute force method would require about 200 texture reads per pixel for good visual quality. This is not acceptable for real-time rendering on current graphics hardware. In order to get high quality results with far fewer reads, sampling is performed using a randomly rotated kernel. The kernel orientation is repeated every N screen pixels in order to have only high-frequency noise in the final picture. In the end this high frequency noise is greatly removed by a NxN post-process blurring step taking into account depth discontinuities (using methods such as comparing adjacent normals and depths). Such a solution allows a reduction in the number of depth samples per pixel to about 16 or fewer while maintaining a high quality result, and allows the use of SSAO in soft real-time applications like computer games. Compared to other ambient occlusion solutions, SSAO has the following advantages: Independent from scene complexity. No data pre-processing needed, no loading time and no memory allocations in system memory. Works with dynamic scenes. Works in the same consistent way for every pixel on the screen. No CPU usage – it can be executed completely on the GPU. May be easily integrated into any modern graphics pipeline. SSAO also has the following disadvantages: Rather local and in many cases view-dependent, as it is dependent on adjacent texel depths which may be generated by any geometry whatsoever. Hard to correctly smooth/blur out the noise without interfering with depth discontinuities, such as object edges (the occlusion should not "bleed" onto objects). Because SSAO operates only on the current depth buffer, it can miss occluding geometry that is not rasterized into the z-buffer and may produce undersampling-related artifacts.
Possibility theory
Possibility theory is a mathematical theory for dealing with certain types of uncertainty and is an alternative to probability theory. It uses measures of possibility and necessity between 0 and 1, ranging from impossible to possible and unnecessary to necessary, respectively. Professor Lotfi Zadeh first introduced possibility theory in 1978 as an extension of his theory of fuzzy sets and fuzzy logic. Didier Dubois and Henri Prade further contributed to its development. Earlier, in the 1950s, economist G. L. S. Shackle proposed the min/max algebra to describe degrees of potential surprise. == Formalization of possibility == For simplicity, assume that the universe of discourse Ω is a finite set. A possibility measure is a function Π {\displaystyle \Pi } from 2 Ω {\displaystyle 2^{\Omega }} to [0, 1] such that: Axiom 1: Π ( ∅ ) = 0 {\displaystyle \Pi (\varnothing )=0} Axiom 2: Π ( Ω ) = 1 {\displaystyle \Pi (\Omega )=1} Axiom 3: Π ( U ∪ V ) = max ( Π ( U ) , Π ( V ) ) {\displaystyle \Pi (U\cup V)=\max \left(\Pi (U),\Pi (V)\right)} for any disjoint subsets U {\displaystyle U} and V {\displaystyle V} . It follows that, like probability on finite probability spaces, the possibility measure is determined by its behavior on singletons: Π ( U ) = max ω ∈ U Π ( { ω } ) . {\displaystyle \Pi (U)=\max _{\omega \in U}\Pi (\{\omega \}).} Axiom 1 can be interpreted as the assumption that Ω is an exhaustive description of future states of the world, because it means that no belief weight is given to elements outside Ω. Axiom 2 could be interpreted as the assumption that the evidence from which Π {\displaystyle \Pi } was constructed is free of any contradiction. Technically, it implies that there is at least one element in Ω with possibility 1. Axiom 3 corresponds to the additivity axiom in probabilities. However, there is an important practical difference. Possibility theory is computationally more convenient because Axioms 1–3 imply that: Π ( U ∪ V ) = max ( Π ( U ) , Π ( V ) ) {\displaystyle \Pi (U\cup V)=\max \left(\Pi (U),\Pi (V)\right)} for any subsets U {\displaystyle U} and V {\displaystyle V} . Because one can know the possibility of the union from the possibility of each component, it can be said that possibility is compositional with respect to the union operator. Note however that it is not compositional with respect to the intersection operator. Generally: Π ( U ∩ V ) ≤ min ( Π ( U ) , Π ( V ) ) ≤ max ( Π ( U ) , Π ( V ) ) . {\displaystyle \Pi (U\cap V)\leq \min \left(\Pi (U),\Pi (V)\right)\leq \max \left(\Pi (U),\Pi (V)\right).} When Ω is not finite, Axiom 3 can be replaced by: For all index sets I {\displaystyle I} , if the subsets U i , i ∈ I {\displaystyle U_{i,\,i\in I}} are pairwise disjoint, Π ( ⋃ i ∈ I U i ) = sup i ∈ I Π ( U i ) . {\displaystyle \Pi \left(\bigcup _{i\in I}U_{i}\right)=\sup _{i\in I}\Pi (U_{i}).} == Necessity == Whereas probability theory uses a single number, the probability, to describe how likely an event is to occur, possibility theory uses two concepts, the possibility and the necessity of the event. For any set U {\displaystyle U} , the necessity measure is defined by N ( U ) = 1 − Π ( U ¯ ) {\displaystyle N(U)=1-\Pi ({\overline {U}})} . In the above formula, U ¯ {\displaystyle {\overline {U}}} denotes the complement of U {\displaystyle U} , that is the elements of Ω {\displaystyle \Omega } that do not belong to U {\displaystyle U} . It is straightforward to show that: N ( U ) ≤ Π ( U ) {\displaystyle N(U)\leq \Pi (U)} for any U {\displaystyle U} and that: N ( U ∩ V ) = min ( N ( U ) , N ( V ) ) {\displaystyle N(U\cap V)=\min(N(U),N(V))} . Note that contrary to probability theory, possibility is not self-dual. That is, for any event U {\displaystyle U} , we only have the inequality: Π ( U ) + Π ( U ¯ ) ≥ 1 {\displaystyle \Pi (U)+\Pi ({\overline {U}})\geq 1} However, the following duality rule holds: For any event U {\displaystyle U} , either Π ( U ) = 1 {\displaystyle \Pi (U)=1} , or N ( U ) = 0 {\displaystyle N(U)=0} Accordingly, beliefs about an event can be represented by a number and a bit. == Interpretation == There are four cases that can be interpreted as follows: N ( U ) = 1 {\displaystyle N(U)=1} means that U {\displaystyle U} is necessary. U {\displaystyle U} is certainly true. It implies that Π ( U ) = 1 {\displaystyle \Pi (U)=1} . Π ( U ) = 0 {\displaystyle \Pi (U)=0} means that U {\displaystyle U} is impossible. U {\displaystyle U} is certainly false. It implies that N ( U ) = 0 {\displaystyle N(U)=0} . Π ( U ) = 1 {\displaystyle \Pi (U)=1} means that U {\displaystyle U} is possible. I would not be surprised at all if U {\displaystyle U} occurs. It leaves N ( U ) {\displaystyle N(U)} unconstrained. N ( U ) = 0 {\displaystyle N(U)=0} means that U {\displaystyle U} is unnecessary. I would not be surprised at all if U {\displaystyle U} does not occur. It leaves Π ( U ) {\displaystyle \Pi (U)} unconstrained. The intersection of the last two cases is N ( U ) = 0 {\displaystyle N(U)=0} and Π ( U ) = 1 {\displaystyle \Pi (U)=1} meaning that I believe nothing at all about U {\displaystyle U} . Because it allows for indeterminacy like this, possibility theory relates to the graduation of a many-valued logic, such as intuitionistic logic, rather than the classical two-valued logic. Note that unlike possibility, fuzzy logic is compositional with respect to both the union and the intersection operator. The relationship with fuzzy theory can be explained with the following classic example. Fuzzy logic: When a bottle is half full, it can be said that the level of truth of the proposition "The bottle is full" is 0.5. The word "full" is seen as a fuzzy predicate describing the amount of liquid in the bottle. Possibility theory: There is one bottle, either completely full or totally empty. The proposition "the possibility level that the bottle is full is 0.5" describes a degree of belief. One way to interpret 0.5 in that proposition is to define its meaning as: I am ready to bet that it's empty as long as the odds are even (1:1) or better, and I would not bet at any rate that it's full. == Possibility theory as an imprecise probability theory == There is an extensive formal correspondence between probability and possibility theories, where the addition operator corresponds to the maximum operator. A possibility measure can be seen as a consonant plausibility measure in the Dempster–Shafer theory of evidence. The operators of possibility theory can be seen as a hyper-cautious version of the operators of the transferable belief model, a modern development of the theory of evidence. Possibility can be seen as an upper probability: any possibility distribution defines a unique credal set of admissible probability distributions by K = { P ∣ ∀ S P ( S ) ≤ Π ( S ) } . {\displaystyle K=\{\,P\mid \forall S\ P(S)\leq \Pi (S)\,\}.} This allows one to study possibility theory using the tools of imprecise probabilities. == Necessity logic == We call generalized possibility every function satisfying Axiom 1 and Axiom 3. We call generalized necessity the dual of a generalized possibility. The generalized necessities are related to a very simple and interesting fuzzy logic called necessity logic. In the deduction apparatus of necessity logic the logical axioms are the usual classical tautologies. Also, there is only a fuzzy inference rule extending the usual modus ponens. Such a rule says that if α and α → β are proved at degree λ and μ, respectively, then we can assert β at degree min{λ,μ}. It is easy to see that the theories of such a logic are the generalized necessities and that the completely consistent theories coincide with the necessities (see for example Gerla 2001).