text:
Genocide and Ethnic Cleansing
Humanitarian Intervention: A Forum
Toggle Menu Share
May 8, 2000 Issue
Holly Burkhalter
Holly Burkhalter has more than twenty years' experience in the human rights field.
By Various Contributors
Subscribe to The Nation
Subscribe now for as little as $2 a month!
Get The Nation's Weekly Newsletter
Fridays. The best of the week. Email
By signing up, you confirm that you are over the age of 16 and agree to receive occasional promotional offers for programs that support The Nation's journalism. You can read our Privacy Policy here.
Thank you for signing up for The Nation's weekly newsletter.
Repro Nation
A monthly newsletter on the global fight for reproductive freedom. Email
Thank you for signing up. For more from The Nation, check out our latest issue.
Support Progressive Journalism
The Nation is reader supported: Chip in $10 or more to help us continue to write about the issues that matter.
Sign up for our Wine Club today.
Did you know you can support The Nation by drinking wine?
Holly Burkhalter has more than twenty years' experience in the human rights field. She is currently advocacy director of Physicians for Human Rights and previously worked for Human Rights Watch.
The date was April 16, 1994, and the place was the Rwandan town of Cyahinda. Thirty-five hundred unarmed Tutsi men, women and children had packed into a small Catholic church, and 4,000 more crowded into surrounding church buildings to escape from the Rwandan army and its death squads. But the men came with their guns and machetes and clubs, surrounded the parish buildings and attacked the helpless families within. In a methodical and almost leisurely manner, they murdered their day's quota–thousands–then came back the next day, and the next.
At the end of four days, some 5,500 unarmed men and women, old people, toddlers and infants lay beneath the pews and aisles and heaped on the altar, their blood and brains splashed on the walls. The last to die at the church was a schoolgirl who had been thrown alive into a deep hole. Other children came to give her water to drink. When the local mayor learned of this, he ordered the hole covered.
There may be those who firmly believe that there should have been no military intervention to save the people in the church and stop the genocide, but I doubt that many of us would like to be counted among them. Whatever differences may roil us over questions of when, where and who on earth should intervene with military force to stop crimes against humanity and genocide, there are times when it simply must be done, and we know it.
Some people of conscience believe that because of the violence the United States has sponsored, our government has no business intervening to suppress vast crimes by others. I disagree. The Genocide Convention does not oblige only those treaty signatories with immaculate hands to prevent and punish the crime of genocide. Our solemn treaty commitment requires the United States to suppress genocide, even if shaming memories of the Holocaust, the Rwanda genocide and the disemboweling of Bosnia do not.
Yet when the case for military intervention to suppress genocide becomes as clear as that of Rwanda, it very late to be finding one's conviction. The Rwanda genocide could have been stopped, but it would have been far easier to prevent. The international community possessed the will to do neither. And so the situation remains to this day, notwithstanding UN Secretary General Kofi Annan's magnificent articulation of a new doctrine, wherein he placed suppression of crimes against humanity above a country's claims of sovereignty.
That doctrine, welcome as it is, will not save a single life if the great nations of the world do not empower the UN to prevent and punish genocide and crimes against humanity, or, if the international institution is incapable, do it themselves. We as citizens should demand that our President declare the principle that prevention and suppression of genocide and crimes against humanity, and punishment of those responsible, are of vital interest to the United States, and announce a program to make this pledge meaningful. First, the United States should contribute significant resources to help expand the UN's own capacity to prevent or suppress genocide and crimes against humanity. The creation of a standing UN rapid-response force is what is most needed to respond quickly to incipient genocide. Since that is not likely to happen with the current US Congress, however, we should demand, at a minimum, that Congress support standby arrangements where troop-contributing nations can designate, train and equip ready units for emergency intervention. Moreover, funds should be provided to double or triple the Secretary General's $50 million reserve fund for preventive action.
Additionally, Congress should appropriate funding to establish an enhanced UN peacekeeping command center in New York and mobile command centers elsewhere to service a rapid deployment to suppress genocide or crimes against humanity. And, so that no world leader can claim, as Clinton did of Rwanda, "I didn't know," the Security Council should demand regular briefings by the High Commissioner for Human Rights and High Commissioner for Refugees when vast crimes unfold. There are other steps that the United States can take to prevent or deter such events. Our own intelligence and diplomatic services should be assigned and funded to collect documentation (including radio and telephone intercepts and satellite photography) in countries where there are early-warning indicators of mass killings to come. Remember Rwanda? Watch for the stigmatization, discrimination and targeted killings of ethnic minorities, a spike in weapons imports, the spawning of heavily armed militias and the broadcasting of chauvinistic and hate-filled political speeches. These genocidal indicators should be widely publicized and used in support of a concerted diplomatic initiative to pressure governments in those countries.
Additionally, perpetrators should be denounced by name, their visas scrapped and their overseas assets seized. Foreign aid of all types except humanitarian should be suspended and hate radio jammed. Extensive human rights monitoring by official bodies such as the UN High Commissioner for Human Rights and the Organization for Security and Cooperation in Europe, or ad hoc diplomatic arrangements such as the Kosovo Diplomatic Observer Mission, should be initiated and funded.
Even if our President and Congress were to pursue policies to prevent genocide and crimes against humanity with a seriousness of purpose born of the certainty that failure to do so would require American support for military intervention, preventive measures would sometimes fail. When that happens, we should demand that our government strongly support UN peacekeeping and peace-enforcement operations, politically, materially, militarily, financially and logistically.
Yet what of those occasions when intervention is clearly required to save helpless people from mass butchery, but one or another member of the Security Council says no? During the Rwanda genocide, it was, to our shame, our own government that thwarted the UN. During the Kosovo crisis it was Russia, and others will take their turn elsewhere. Are the victims less deserving because Russia or China or the United States itself has decided that they are not worth saving?
Imagine, if you will, that a government, let's say Canada, acting under the auspices of the Genocide Convention's command that genocide must be stopped and its perpetrators punished, had bucked the will of a US-dominated Security Council in April of 1994 and sent troops unilaterally to Rwanda. Imagine those Canadian soldiers surrounding the church and parish buildings in Cyahinda and a hundred places like it, defeating the machete-wielding butchers whose only prowess was in slashing children, and leading those thousands of families to safety. Condemn such an operation as illegal and immoral because it did not bear the Security Council's imprimatur? Not on your life. And not on theirs.
Mahmood Mamdani
Mahmood Mamdani, a Ugandan citizen, is Herbert Lehman Professor of Government and director of the Institute of African Studies at Columbia University. He received his doctorate from Harvard and has previously taught at several African universities. He is currently completing a political analysis of the causes and consequences of the genocide in Rwanda.
Advocates of "humanitarian intervention" argue that Rwanda needs to be a turning point in post-cold war politics, one that will introduce a renewed consensus on human rights into international politics. If the pledge that followed the Holocaust–"never again"–could not be upheld because of the cold war, they argue, the end of the cold war provides the context necessary to renew that pledge and give it teeth.
The consensus around "humanitarian intervention" brings together two different points of view. For some, the end of the cold war provides a real opportunity for observing a human rights standard internationally. Now that dictators hitherto nurtured by the cold war–Saddam Hussein and Slobodan Milosevic, for example–have been orphaned by its end, they must be forced to observe minimal international human rights standards. Should they fail to observe these standards, they must be the target of armed humanitarian intervention.
For others, the end of the cold war entails the danger that big powers may succumb to isolationism, and underlines the need to hold those powers responsible for international policing. From this point of view, the need for humanitarian intervention arises precisely in those cases where powerful nations do not have direct interests at stake and are thus unwilling to risk anything. In those instances, say human rights activists, it is vital to compel big-power intervention for humanitarian purposes. In other words, if intervention is not a political necessity, it must be made one through a popular crusade that demands it.
I disagree with those who call for "humanitarian interventions" in the post-cold war era for one reason: I think it necessary to judge each intervention on its own merit, particularly its political merit. In a globalized world of highly unequal actors, humanitarian intervention will be a name for big-power intervention in practice. Every intervention will serve a complex of interests, general and specific. There can be no such thing as an unambiguous humanitarian intervention.
Like every turning point, Rwanda offers us not one but several lessons. The UN did not just withdraw; it also authorized a humanitarian intervention by the French, code-named Operation Turquoise. That intervention did save many Tutsi, but it also saved the political and military leadership that carried out the genocide. As if to underline that "humanitarian intervention" is indeed a political blank check, neither the UN nor any other international forum has held the French accountable for that intervention.
Rather than being an exception, doesn't Operation Turquoise fit neatly into a history of imperial intervention over the past several centuries? Didn't slaving powers portray Africa as a state of nature where life was nasty, brutish and short and where slavery salvaged the lives of its victims, introducing them to the nobility of labor? And didn't colonial powers entering Africa toward the end of the nineteenth century claim to be stamping out slavery? In other words, hasn't every imperial intervention claimed to be humanitarian?
In addition to the French intervention in Rwanda, the US-led interventions in Iraq and Kosovo also teach us that every intervention has its politics. Iraq brought home the fact that the lives of ordinary Iraqis were dispensable, whether they turned the intervention into an opportunity to remove the dictatorship through popular action or whether the dictatorship turned them into human shields against the intervention. Kosovo brought that same lesson home in a different way: The lives of individual pilots in the sky were far more precious than those of the multitudes living on the ground.
This is not to say that every external intervention is imperialist, but it is to say that calling an intervention "humanitarian" cannot strip it of its politics. If the cold war led to a single-minded focus on imperial powers, the end of the cold war should not replace it with a single-minded focus on local despots. If the cold war generated a preoccupation with politics that lost sight of humanity, the end of the cold war should not be turned into an invitation–or a temptation–to disregard politics in the name of humanity.
Rather than calling for a type of intervention that is free from political accountability, we should be placing the question of accountability at the center of the discussion. Globalization shows that we have enhanced technological capacities, but it also underlines the need to put in place some kind of representative governing structure internationally. At the very least, it calls on us to examine the representativeness of the international arrangements that now exist, from the UN to the Bretton Woods institutions. The point is to make these institutions accountable to those who will suffer the consequences of the decisions they make.
Ronald Steel
Ronald Steel's most recent books are In Love With Night: The American Romance With Robert Kennedy (Simon & Schuster) and Temptations of a Superpower (Harvard).
All during the cold war American intervention was a dirty word on the left. It was usually taken to mean interfering in other countries to suppress radical movements, always under the catchall justification of anti-Communism. But over the past decade, with the disappearance of the ideological foe, what was once viewed as repressive and self-serving is now described as responsible and humanitarian. Enter "Operation Just Cause" in the Balkans and what is described as "virtuous intervention." Since the end of the cold war the United States has intervened with military force in five internal or regional conflicts: Somalia, Haiti, Iraq, Bosnia and Kosovo. In the first two the United States acted alone; in the others it was aided to one degree or another by allies. In each of these interventions the results have been, to say the least, disappointing. Saddam Hussein is still in power, Somalia is still ruled by warlords, Haiti is still mired in misery and oppression, Bosnia has been effectively partitioned into ethnic enclaves and Kosovo is being ethnically purified under the aegis of the Kosovo Liberation Army.
The "virtuous" part of these interventions has been more in the intentions than the consequences. Does this mean that the principle of humanitarian intervention is wrong or doomed to failure? No, but it does provide some important caveats.
First, interventions that are purely "humanitarian" and far removed from obvious concerns about national security can be sustained only if they are relatively cheap in lives and resources; have at least a veneer of international approval; confront situations that are genocidal, in that they threaten the very existence of a people; and can be resolved by military action. The five interventions of the past decade do not easily fill these requirements, and have fallen short of their ambitious goals.
By contrast, the one intervention that we should have undertaken, that we could have accomplished quickly and successfully, and that was shameful not to have undertaken was in Rwanda. There, with several thousand armed men we could have prevented the murder of an estimated 800,000. But it was only Africa, after all, and a few of our soldiers might have been shot, and it was all so primeval and distant, and it was hard to find any political advantage in it.
Where we have intervened the reasons have not always been exclusively humanitarian or virtuous: In Kuwait we also sought to protect the sources of cheap oil; in Somalia in part to get embarrassing TV coverage off the nightly news; in Haiti to stanch the flow of refugees to Florida; in Bosnia and Kosovo to assert America's continued leadership of Europe through NATO. The two major interventions described as "humanitarian"–Bosnia and Kosovo–did end the fighting and some of the human rights abuses. But only for a time. In Kosovo as in Bosnia, the peacekeepers cannot be withdrawn lest fighting resume. This is because the interventions ignored, and in some cases exacerbated, the political nature of the disputes. The issue in both cases was that of self-determination: the right of an ethnic group to secede from an existing state. In Bosnia, the United States (and the Europeans) endorsed this principle; in Kosovo it fought in support of an armed separatist group but maintains that it opposes the total detachment of the province from Serbia.
The trouble with the principle of ethnic self-determination is that its pursuit could lead to the destruction of a great many existing states and widespread warfare of the kind seen in places like Sri Lanka. Based on the exaltation of tribal loyalties, it invites majorities to be intransigent, furnishes pretexts for repression and leads to civil wars. It also denies the basis of our own social compact and our declared allegiance to multiculturalism.
There are times when foreign intervention in support of an ethnic group may be necessary: when its people are targeted for genocidal extermination (as were the Tutsis of Rwanda and the Jews of Nazi Europe), when they have been subjected to severe and repeated crimes against humanity, and when there have been persistent human rights abuses over a sustained period of time against an ethnic community.
In relatively few cases do these conditions apply. But that's all the more reason to draw the lines strictly so that intervention can be undertaken with maximum public support. Whether it will be successful depends on more than virtue or righteousness. It demands the commitment of all sides to a workable accord. It depends on being framed and enforced in such a way as to bring greater stability to the area. It requires support for domestic groups actively seeking a political settlement–not those simply using foreign intervention to further their own purposes. And it must be applied in such a way as to discourage resentful ethnic separatists from using foreign humanitarians to dismember existing states.
The more intervention strays from concerns over self-defense, the more subjective it becomes. To say that we have the right to intervene anywhere we choose to protect our self-defined "values and interests" is to open the door to other nations to defend their own–as they define them. A humanitarian impulse could, through abuse, become a geopolitical nightmare. This is why intervention should be an international undertaking–not because we need the physical support of other nations but to temper the dangers of self-righteousness and self-delusion.
Mary Kaldor
Mary Kaldor is director of the Global Civil Society program at the London School of Economics and author of New and Old Wars: Organized Violence in a Global Era (Stanford).
In early February, violence broke out in Mitrovica in northern Kosovo, when groups of Serbs went from apartment to apartment throwing grenades and beating people. French KFOR troops withdrew to another part of town. UN police tried to intervene but were outnumbered. Eventually Danish troops came to their assistance, "acting on their own individual initiative," according to the BBC report, and "not at the orders" of the French commanding officer. According to the UN police, "the Danes were superb."
There are similar stories about Danish soldiers during the Bosnian war, where they disobeyed UN orders and fired back at Serbs attacking UN convoys. The Danes were criticized for not keeping to the UN mandate, but they were effective in protecting humanitarian corridors.
A genuine humanitarian intervention is much more like policing than warfighting or traditional peacekeeping. Soldiers are supposed to kill under orders. Their job is to fight in wars, which are supposed to be directed against other states. Unlike criminals, they are legitimate bearers of arms. Indeed, soldiers are considered heroes and not murderers; they kill to defend their countries and are applauded for their bravery. They do not feel morally responsible for the violence because they kill at a distance. They kill at a psychological distance because they are obeying someone else's orders, and often at a physical distance because they drop bombs or fire artillery shells and do not come face to face with their victims.
In contrast, police are supposed to enforce the rule of law domestically; their job is to protect the public from crime. They are expected to protect victims of crime and to capture criminals. They are expected to be present on the ground and to use their own initiative. They are supposed to save as many lives as possible, including the criminals who should stand trial. They are not supposed to kill or use violence except in defense and, within the rule of law, they are individually accountable for their actions.
Humanitarian intervention has to be understood as a new phenomenon, not simply in terms of goals but also in terms of methods. The idea of overriding state sovereignty in defense of human rights marks not just a conceptual break with a state-centered view of the world but a practical break with traditional forms of warfighting. Conventional war between states has become an anachronism. In contemporary wars in places like Eastern Europe or Africa, most violence is directed against civilians and involves an array of techniques, including population displacement, especially "ethnic cleansing"; atrocities like torture, systematic rape and massacres; and destruction of infrastructure and historic buildings. The aim is to control territory by sowing fear and hatred. This method of warfare directly violates the laws of war as well as the various postwar conventions and treaties on human rights.
In this type of war, humanitarian intervention has to be understood not as warfighting (intervention on one side or the other) or as peacekeeping (keeping the sides apart and/or guaranteeing cease-fires) but as international law enforcement. If contemporary wars have become a mixture of war and massive violations of human rights, then intervention has to become a mixture of policing and military operations. The aim is to restore legitimacy by countering the strategy of sowing fear and hatred with a strategy of winning "hearts and minds" by containing violence and operating within the framework of international law. This involves the direct protection of civilians and the arrest of individual war criminals. Instead of offensive operations against a military enemy, humanitarian intervention should be defensive and non-escalatory. Humanitarian intervention involves new techniques such as the creation of safe havens and safe zones, as well as humanitarian corridors.
The role of UNPROFOR in Bosnia and Herzegovina did represent a weak form of humanitarian intervention in the imposition of safe havens and humanitarian corridors. The problem was that the troops were poorly armed and ordered not to use force, and their lives were privileged over the lives of those they were supposed to protect.
In contrast, NATO's airstrikes against Serbia last year were much more in the tradition of warfighting. Although the goal was humanitarian intervention, the practice was conventional war. Instead of directly protecting civilians on the ground, NATO conducted offensive operations against the Serbian military machine, including its infrastructure in Serbia. This approach actually had counterproductive consequences, since it allowed Slobodan Milosevic to mobilize public opinion in Serbia and to speed up ethnic cleansing on the ground. It is true that in the end Milosevic capitulated, but the war led to a double ethnic cleansing. As Gen. Wesley Clark put it, you "cannot stop paramilitary murder on the ground with airplanes."
Forging a new type of humanitarian intervention requires a restructuring of armed forces. It means emphasis on ground troops rather than on sophisticated equipment for long-distance killing. But above all, it requires a cognitive and moral transformation in the way we understand the legitimate use of violence. Soldiers have to behave more like police officers. Whereas in military operations the aim is to minimize casualties on your own side, even if this means maximizing casualties on the other side, in humanitarian intervention the aim is to minimize all casualties, even if this means risking the lives of the soldiers/police officers. Whereas soldiers kill at a distance, humanitarian intervention means a presence on the ground. Above all, whereas soldiers obey orders unquestioningly and become cogs in a collective machine, the new international law enforcers have to take individual responsibility for local situations and make difficult judgments about how to respond based on their own knowledge and conscience. Even if they did disobey orders, the Danish peacekeepers seemed to understand, more than anyone else, what humanitarian intervention ought to mean.
Various Contributors
To submit a correction for our consideration, click here.
For Reprints and Permissions, click here.
Latest from the nation
Today 9:25 am
The Pentagon's Quest for Academic Intelligence: (AI)
Michael T. KlareTwitter
Gun Control, Now!
Andrea ArroyoTwitter
When My Song "Rich People" Went Viral, It Didn't Make Me Rich
Carsie Blanton
Meet Dennis Oya, Patient Zero of the TB Outbreak Sweeping Washington's Prisons
Katharine S. Walter
Love in the Time of Chatbots
Zachary Fine
VIDEO: People in Denmark Are a Lot Happier Than People in the United States. Here's Why.
The NationTwitter
Historical Amnesia About Slavery Is a Tool of White Supremacy
Mychal Denzel SmithTwitter


Regardless of your bug problem-- be termites, cockroaches, or rodents-- nobody takes pleasure in the sight of a pest scooting throughout their walls and hallways. After all, many bugs are understood to present a variety of health risks, with some even known for bring illness into your house. Regrettably, when you identify one pest that often indicates there are numerous them concealing someplace and all set to further infest your home. When this occurs, you'll wish to work with the best pest control specialist around to secure your home.
From bee removal and bed bug control to termite inspection and gopher and squirrel control, our pest control operators have the training and experience to deal with any pests that have actually attacked your home.
When the bed bugs are in your home, they'll be going from 1 place to another. Bed bugs are intrusive bugs East Saint Louis, IL that may be tough to find. They are best treated by an knowledgeable specialist.
Bed bugs are rather more resistant and resistant than each bug, including rats and cockroaches in East Saint Louis, IL . Unless a bed bug was identified, the first symptom of an problem is normally the existence of skin irritation. Once bed bugs have attacked your home, they can be rather difficult to get rid of. They can be more difficult to treat than other home pest bugs for a couple of reasons. Since they are tough to see, use a magnifying glass. They don't remain on the human that they are eating and so they will typically hide in clothing and aim to get to a brand-new location. They are not able to survive high temperatures, making heat a extremely reliable treatment method .
Charge of bed bugs can take a while and multiple follow-up treatments. Overall control takes a thoroughly prepared and developed integrated strategy. Bed bug control does not need to be pricey East Saint Louis, IL .
You will need to understand the signals of a vermin problem. An infestation is something which can take place to anybody East Saint Louis, IL . As an example, be particular to take a look at where you have to look after your bed bug problem. If you're concerned you own a bed bug problem, start looking for physical indications of their presence. Bed bug problems can affect a single bed in 1 room or a entire residence or residential or commercial property. Chemical approaches aren't the only method to control bed bug problems.
The Best Ways To Get Going with Bed Bugs Exterminator or Pest Control Man East Saint Louis, IL ?
Normally, experienced insect control business will utilize a couple of selections of treatment approaches like vacuuming, cleaning, steaming and other mechanical techniques to totally remove the bed bug infestation. There are numerous pest control companies that may assist you for the exact very same. Usually speaking, most excellent pest control businesses will at first send out down a professional to run a visual evaluation of your house prior to estimating you a cost East Saint Louis, IL .
If you're not needed to leave your house for more than a few hours throughout the extermination, or in case you are preparing yourself for the exterminator, there are a variety of approaches to prevent taking bed bugs with you. As soon as you are able to observe that bed bugs have indeed entered your home, it's not ever prematurely to try and find an excellent bed bugs pest control man East Saint Louis, IL East Saint Louis, IL . During a fumigation, your house will be dealt with in tarpaulin, which is typically anchored utilizing huge containers of water you should supply. Whether a full home is plagued, it might be needed to spray listed below the house, which would increase the total price of services. Your house doesn't have to be plagued that you pick up bed bugs. Attempt to keep in mind that Do It Yourself insecticides alone are not likely to rid your home of bed bugs, specifically products which do not keep eliminating after they dry.


To book artists and talent such as Victor, Victoria for your corporate event, convention, or fundraiser, just use our Find Talent Form or Contact us.
Boasting seven 1982 Academy Award nominations this "romantic and bone-crushingly funny movie" (New York Times) predates Hollywood's current spate of gender-bending comedies by more than a decade and spawned it's own smash Broadway revival! Is about Victoria, a British chanteuse down on her luck in 1934 Paris...until she meets Toddy. Always on the lookout for a clever and profitable gimmick, Toddy casts the singer as Victor -- a very convincing female impersonator! When the two hit the Paris club circuit, they begin raking in the francs. But when an American club owner takes a liking to the new star without knowing which side of the sexual equation he/she stands, it could spell desastre for all three of them. A raucously funny script from Blake Edwards (the Pink Panther series) and an Oscar-winning score combine to provide "enough humor, music and fine comic acting to make everyone smile" .
To book an artist such as Victor, Victoria or other big name talent for your Corporate Event, Private Party, Fundraiser or Convention, let one of our mediator agents negotiate with managers, agents and artists to achieve the best possible entertainment experience.
Just fill out the Talent Request form for "Victor, Victoria", so that one of our experienced professionals can contact and book this artist for you. We make booking entertainment and booking musicians easy! So get started with the preliminary Talent Request form and let us use our negitiating skills to get Victor, Victoria booked for your next event.


text:
\section{Introduction}

Quantum computers can solve specific problems significantly faster than classical computers. Besides early examples of corresponding algorithms such as Shor's factorization approach~\cite{DBLP:journals/siamcomp/Shor97} and Grover's database search~\cite{DBLP:conf/stoc/Grover96}, recently also other relevant quantum algorithms have been found in the areas of chemistry, finance, machine learning, and mathematics~\cite{montanaro2016quantum,Kassal18681, RebentrostFinance,KerendisQmeans, farhiQAOA}.
Moreover, not least due to the drive of big companies such as  IBM, Google, Intel, Rigetti, Microsoft, or Alibaba, who are heavily investing in this emerging technology, there have been remarkable accomplishments towards the physical realization of quantum computers recently.
\newpage
However, quantum computers do not work perfectly and are indeed even more prone to errors than their classical counterparts.
In particular, decoherence errors~\cite{Tannu2018} are a common phenomenon with which researchers and engineers frequently have to deal with.
They lead to the problem that qubits can only hold information for a limited amount of time. Although
recent developments in the physical realization of quantum computers have improved upon that~\cite{Devoret1169, Kelly2018}, decoherence errors are still a dominating aspect in quantum computing.

Accordingly, it is essential to specifically evaluate whether quantum algorithms can cope with this kind of errors. To this end, methods for quantum circuit simulation would be ideal as they allow for an explicit investigation how a given algorithm behaves on a specific device and its possible errors.
But most of the available simulators (such as, e.g., proposed in~\cite{vidal2003efficient,zulehner2017advanced,MTG:2006,niemannQMDDsEfficientQuantum2016,Steiger2018projectqopensource}) mimic \emph{perfect} quantum computers and, thus, ignore the fragile nature of quantum mechanical effects which frequently yield to decoherence errors.
Luckily, the effects are well understood and mathematical models for decoherence errors are available~\cite{NC:2000}---leading to first simulation approaches to also support the consideration of those errors (e.g. ~\cite{qiskit,atos2016,qxSimulator2017,DBLP:journals/corr/WeckerS14,CirqPythonFramework,jones2018quest,DBLP:journals/corr/SmelyanskiySA16,villalonga2019highperformancesimulator}).

But a main challenge remains: The capabilities of those simulation approaches is severely limited  by the inherent exponential nature of the vectors and matrices which describe the respective quantum states and operations, respectively. Additionally considering decoherence errors further increases the resulting complexity.
Because of this, alternatives to straightforward approaches (which represent the required vectors and matrices in terms of arrays) are currently investigated.
Decision diagrams for quantum circuit simulation %
(as introduced, e.g., in~\cite{DBLP:conf/esa/Samoladas08,viamontes2004high,zulehner2017advanced,MTG:2006,niemannQMDDsEfficientQuantum2016}) provide a promising approach. In many cases and/or for many quantum applications, they allow for a representation of vectors and matrices which is below the exponential size of array-based solutions~\cite{zulehner2017advanced,grurl2020caseStudy}.

All these methods, however, do not support the consideration of decoherence errors yet. Moreover, thus far, it remains unknown whether the promising effects of a more efficient representation of vectors and matrices can still be maintained, when those errors are additionally taken into account.
In this work, we are investigating this issue.
Our observations and evaluations suggest that decision diagrams might remain compact in many cases---even if decoherence errors are considered.
But we also show that just having a compact representation is not sufficient: Efficiently realizing the operations describing the error effects poses a substantial challenge.
In order to mitigate those negative effects, we eventually propose an advanced solution for simulation using decision diagrams that also can efficiently handle decoherence errors.

Experimental evaluations and comparisons to state-of-the-art simulators by IBM and Atos confirm %
the viability of the proposed solution.
Moreover, we show that the proposed advanced solution
is able to complete simulation runs several orders of magnitudes faster than the solution with a naive consideration of errors.

Our contributions are described in the rest of this paper as follows: Section~\ref{sec:background} reviews quantum computing and quantum circuit simulation using arrays as well as decision diagrams. Section~\ref{sec:sim} discusses how considering errors changes the way simulation is conducted and analyzes the resulting challenges for approaches based on decision diagrams.
Based on these insights, we propose an advanced simulation scheme in Section~\ref{sec:opt}. Finally, we summarize our evaluations in Section~\ref{sec:eval} and conclude the paper in Section~\ref{sec:conclusion}.

\section{Background}
\label{sec:background}
In this section, we review the basics of quantum computing and the simulation of corresponding quantum algorithms/circuits (using array-based methods as well as methods based on decision diagrams).

\subsection{Quantum Computing}
\label{sec:bg_quantum}
While, in the classical world, systems are described by bits which can either be 0 or 1, in quantum computing a system is described by \mbox{so-called} quantum bits or qubits. In contrast to classical bits, qubits can assume not only the state 0 or 1---which are called basis states and, using Dirac notation, are written as $\ket{0}$ and $\ket{1}$---but also an almost arbitrary combination (\emph{superposition}) of these states. %
More precisely, the state of the qubit $\ket{\phi}$ is given by $\ket{\phi} = \alpha_0 \cdot \ket{0} + \alpha_1 \cdot \ket{1}$. The amplitudes $\alpha_0, \alpha_1 \in \mathbb{C}$ describe how the qubit is related to each of the basis state and must satisfy the normalization condition $\abs{\alpha_0}^2 + \abs{\alpha_1}^2 = 1$. Measuring a qubit in superposition results in its collapse into one of the basis states $\ket{0}$ or $\ket{1}$ with probability $\abs{\alpha_0}^2$ and $\abs{\alpha_1}^2$, respectively.

These concepts can be extended for \mbox{multi-qubit} systems---to \mbox{so-called} \emph{quantum registers}---to represent the exponential number of basis states the system can assume. For example, a two qubit system~$\ket{\psi}$ has four basis states and is described by $\ket{\psi} = \alpha_{00} \cdot \ket{00} + \alpha_{01} \cdot \ket{01} + \alpha_{10} \cdot \ket{10} + \alpha_{11} \cdot \ket{11}$. Usually, the state description for \mbox{n-qubit} systems is shortened to a column vector of size $2^n$ containing only the amplitudes, e.g., $ \begin{bNiceMatrix}[small] \alpha_{00}&\alpha_{01}&\alpha_{10}&\alpha_{11}\end{bNiceMatrix}^\top$ for $n=2$.

The state of a qubit can be manipulated using quantum operations. With the exception of the measurement operation, all quantum operations are inherently reversible and, therefore, represented by unitary matrices. Important quantum operations are the %
NOT operation, which negates the state of a qubit, and the Hadamard operation, %
 which transforms a qubit from a basis state into a superposition. In addition to single-qubit operations, there are two-qubit operations. A prominent operation is the controlled-NOT (CNOT) operation, which negates the state of a qubit, if the designated control qubit is in state $\ket{1}$.
Applying an operation to a quantum state is done via matrix-vector multiplication.
To illustrate these concepts, consider the following example:
\begin{example}
\label{exp:matrxi_vector_mul}
Consider a two-qubit register in the state
\begin{align*}
\ket{\psi} = \frac{1}{\sqrt{2}} \cdot \ket{00} + 0 \cdot \ket{01} + \frac{1}{\sqrt{2}} \cdot \ket{10} + 0 \cdot \ket{11},
\end{align*}
which is represented as $ \sfrac{1}{\sqrt{2}}\cdot\begin{bNiceMatrix}[small] 1&0&1&0\end{bNiceMatrix}^\top$. This is a valid state since $\abs{{\sfrac{1}{\sqrt{2}}}}^2 + 0^2+ \abs{{\sfrac{1}{\sqrt{2}}}}^2 + 0^2 = 1$. Measuring the state yields either $ \ket{00} $ or $ \ket{10} $, both with probability $\abs{{\sfrac{1}{\sqrt{2}}}}^2 = {\sfrac{1}{2}}$.
Applying a CNOT operation to the state, which flips the amplitude of the second qubit when the first qubit, is set to 1 is given by
\begin{align*}
\underbrace{\begin{bmatrix}1&0&0&0\\0&1&0&0\\0&0&0&1\\0&0&1&0\end{bmatrix}}_{\textup{CNOT}}  \cdot  \underbrace{\frac{1}{\sqrt{2}}\begin{bmatrix}1\\0\\1\\0\end{bmatrix}}_{\mathit{\ket{\psi}}} = \underbrace{\frac{1}{\sqrt{2}}\begin{bmatrix}1\\0\\0\\1\end{bmatrix}}_{\mathit{\ket{\psi^\prime}}}.
\end{align*}

Measuring the new state $\ket{\psi^\prime}$ now yields either $ \ket{00} $ or $ \ket{11} $, each with probability ${\sfrac{1}{2}}$.

\end{example}

\subsection{Array-based Quantum Circuit Simulation}
\label{sec:array_based_sim}
The array-based simulation style realizes the concepts described above in a straightforward fashion. States and operations are represented by 1-dimensional and 2-dimensional arrays, respectively. Simulation is conducted by matrix-vector multiplications similar to Example~\ref{exp:matrxi_vector_mul}. Since the multiplication of a matrix and a vector can be decomposed into smaller operations, this simulation approach has a huge potential for parallelization. Every matrix-vector multiplication can be split into a series of multiplications and additions, i.e.,
\begin{align*}
\begin{bmatrix}
M_{00} & M_{01} \\
M_{10} & M_{11} \\
\end{bmatrix}
\cdot
\begin{bmatrix}
V_{0} \\
V_{1} \\
\end{bmatrix}
=
\begin{bmatrix}
	M_{00} \cdot V_0 + M_{01} \cdot V_1 \\
M_{10} \cdot V_0 + M_{11} \cdot V_1 \\
\end{bmatrix}.
\end{align*}
This can be further decomposed in a recursive fashion, leading to a large set of intermediate operations, which can be executed independently of each other with little synchronization overhead. State-of-the-art array-based simulators (such as~\cite{DBLP:journals/corr/WeckerS14,DBLP:journals/corr/SmelyanskiySA16,qxSimulator2017,qiskit,Steiger2018projectqopensource,CirqPythonFramework,atos2016}) make heavy use of that.

\subsection{Decision Diagram-based Quantum Circuit Simulation}
\label{subsec:dd_simulation}

In order to tackle the memory problem of array-based simulators, a complementary approach has been developed using decision diagrams~\cite{DBLP:conf/esa/Samoladas08,viamontes2004high,zulehner2017advanced,MTG:2006,niemannQMDDsEfficientQuantum2016}. The general idea of decision \mbox{diagram-based} simulation is about identifying data redundancies in the state and representing them using shared sub-structures. Doing so results in a potentially very compact state representation, which in turn allows simulating quantum applications that cannot be simulated using array-based simulation approaches.

Representing a state vector as a decision diagram revolves around recursively splitting the vector into equal sized sub-vectors, until the sub-vectors only contain a single element. More precisely, consider a quantum register $q_0, q_1,\dots,q_{n-1}$ composed of $n$ qubits, where $q_0$ represents the most significant qubit. The first $2^{n-1}$ entries of the corresponding state vector would then represent amplitudes for basis states where $q_0$ is $\ket{0}$ and the other entries would represent amplitudes where $q_0$ is $\ket{1}$. This is represented in a decision diagram by a node labeled $q_0$ with two successors labeled $q_1$. By convention, the left (right) successor points to a node that represents  the sub-vector with amplitudes for basis states with $q_0$ assigned $\ket{0}$~($\ket{1}$). This process is repeated recursively until sub-vectors of size 1 (i.e. complex numbers) result. During this process, equivalent sub-vectors are represented by the same node, reducing the overall size of the decision diagram. Furthermore, instead of having distinct terminal nodes for all amplitudes, edge weights are used to store common factors of the amplitudes, leading to even more compaction. Reconstructing the amplitude of a specific state can be done by multiplying the edge weights along the corresponding path.
In order to increase the readability of the decision diagram edge weights of 1 are omitted. Additionally, nodes with an incoming edge weight of 0 are represented as 0-stubs---indicating that amplitudes of all possible states represented by this part of the decision diagram are zero.

\begin{figure}[t]
	\centering
	\begin{subfigure}[t]{0.40\linewidth}
		\centering
		\begin{tikzpicture}
		\matrix[matrix of math nodes, left delimiter={[},right delimiter={]}, inner xsep=0] (vector) {
			\frac{1}{\sqrt{2}}\\
			0\\
			0\\
			\mathbf{\frac{1}{\sqrt{2}}}\\
		};
		\begin{scope}[on background layer, black]
		\node[right=0.6cm of vector-1-1.center] {$\ket{00}$};
		\node[right=0.6cm of vector-2-1.center] {$\ket{01}$};
		\node[right=0.6cm of vector-3-1.center] {$\ket{10}$};
		\node[right=0.6cm of vector-4-1.center] {$\ket{11}$};

		\draw[black,-,dashed, very thick,shorten <= -0.6cm] ($(vector-2-1)!0.5!(vector-3-1)$) -- ++(-1.25,0) node[anchor=east] {\(q_0\)};

		\draw[black,-,dashed, thick,shorten <= -0.6cm] ($(vector-1-1)!0.5!(vector-2-1)$) -- ++(-1,0) node[anchor=east] {\(q_1\)};
		\draw[black,-,dashed, thick,shorten <= -0.6cm] ($(vector-3-1)!0.5!(vector-4-1)$) -- ++(-1,0) node[anchor=east] {\(q_1\)};

		\end{scope}
		\end{tikzpicture}
		\caption{Vector representation}
		\label{fig:statevectorvector}
	\end{subfigure}\hfill
	\begin{subfigure}[t]{0.6\linewidth}
		\centering
		\begin{tikzpicture}
		\matrix[matrix of nodes,ampersand replacement=\&,every node/.style=vertex,column sep={0.5cm,between origins},row sep={0.9cm,between origins}] (qmdd2) {
			\& \node (m1) {$q_0$}; \& \\
			\node (m2a) {$q_1$}; \& \& \node (m2b) {$q_1$}; \\
			\& \node[terminal] (t3) {1}; \& \\
		};

		\draw[thick] ($(m1)+(0,0.5cm)$) -- (m1) node[right, midway]{$\sfrac{1}{\sqrt{2}}$};

		\draw (m1.-135) -- ($(m1)!0.5!($(m2a)!0.5!(m2b)$) + (-5mm,0)$) -- (m2a.90);
		\draw[thick] (m1.-45) -- ($(m1)!0.5!($(m2a)!0.5!(m2b)$) + (5mm,0)$) -- (m2b.90);

		\draw (m2a.-135) -- ($(m2a.-135) - (1.2mm,2.0mm)$) -- (t3.135);
		\draw (m2a.-45) -- ($(m2a.-45)!0.2!(t3) + (0mm,0)$)  node[zeroterm] {$0$};;

		\draw (m2b.-135) -- ($(m2b.-135)!0.2!(t3) + (0mm,0)$)  node[zeroterm] {$0$};;
		\draw[thick] (m2b.-45) -- ($(m2b.-45) - (-1.2mm,2.0mm)$) -- (t3.45);
		\end{tikzpicture}
		\caption{Decision diagram representation}
		\label{fig:statevectordd}
	\end{subfigure}%
	\vspace*{-2mm}
	\caption{State vector representation}
	\label{fig:statevector}
	\vspace*{-4mm}
\end{figure}

\begin{example}
\label{exp:vectorToDD}
In Fig.~\ref{fig:statevector}, a quantum register is represented both in the vector and decision diagram representation. The annotations of the state vector in Fig.~\ref{fig:statevectorvector} indicates how it is decomposed when the corresponding decision diagram is constructed. Reconstructing the amplitude for a specific state from the decision diagram requires multiplying the edge weights of the corresponding path. For example, reconstructing the amplitude of the state $\ket{11}$ (bold lines in the figure), requires multiplying the edge weight of the root edge (${\sfrac{1}{\sqrt{2}}}$) with the right edge of $q_0$ ($1$) as well as $q_1$ ($1$), i.e.~${\sfrac{1}{\sqrt{2}}} \cdot 1 \cdot 1 = {\sfrac{1}{\sqrt{2}}}$.
\end{example}

Quantum operations are represented in a similar fashion as quantum states. However, due to the square nature of matrices, they are split into four equal sized sub-parts. This is represented in a decision diagram by a node with four successors
the first one representing the sub-matrix in the upper left corner, the second one representing the sub-matrix in the upper right corner, the third one representing the sub-matrix in the lower left corner, and the fourth one representing the sub-matrix in the lower right corner. Apart from this, the decomposition and normalization process is analogue to the one for vectors.

Similar to array-based simulators, simulation is conducted by multiplying operations onto states. However, due to the different representation, the multiplication must be decomposed with respect to the most significant qubit. Consider again a quantum register $\ket{\phi} = q_0, q_1, \ldots, q_{n-1}$ of $n$ qubits, where $q_0$ represents the most significant qubit, as well as a unitary quantum operation $U$ of size $2^n \times 2^n$. In order to multiply the operation $U$ onto the state~$\ket{\phi}$, they are split into two (in the case of the state vector) and four (in the case of the operation) equally sized parts. Leading to two sub-vectors of size $2^{n-1}$ and four sub-matrices each of size $2^{n-1} \times 2^{n-1}$.
This represents the modifications of $U$ onto $q_0$ and is represented by a top node labeled $q_0$, with two successor nodes. The splitting process is repeated recursively until vectors of size~$2$ and matrices of size $2 \times 2$ remain. These are multiplied and the resulting new amplitudes are stored into terminal edges. Finally, the edge weights are calculated by extracting common factors of the amplitudes and equivalent sub-vectors are represented by the same node. Hence, multiplication of decision diagrams mainly involves recursive traversals of the involved decision diagrams. On top of that, further optimizations are possible with respect to the precision of the simulation~\cite{DBLP:conf/date/ZulehnerNDW19, niemann2020overcoming}, the \mbox{run-time} performance~\cite{DBLP:conf/date/ZulehnerW19}, or a trade-off of both~\citep{zulehner2020Approx}

\section{Simulation of Decoherence}
\label{sec:sim}

In this work, we aim for the consideration of decoherence errors in the simulation of quantum circuits using decision diagrams. To this end, we provide the motivation and propose an initial approach in this section.
More precisely, this section first reviews decoherence effects that occur in today's quantum computer realizations and afterwards provides a mathematical description of them to be used by simulation approaches in general. Based on that, we then show how those descriptions can be used to conduct such simulations using decision diagrams and discuss how this may affect the performance of corresponding approaches.

\subsection{Qubit Decoherence Errors}
\label{subsec:rep_errors}

Coherence errors occur due to the fragile nature of qubits---leading to the problem that they can only hold information for a limited amount of time.
More precisely, there are two types of coherence errors that arise~\cite{Tannu2018}:
\begin{itemize}
\item A qubit in a \mbox{high-energy} state~$\ket{1}$ naturally tends to decay to a low energy state~$\ket{0}$, i.e., after a certain amount of time, qubits in a quantum system eventually relax to~$\ket{0}$. This error is called \emph{amplitude damping error} or \emph{T1~error}.

\item In addition to that, when a qubit interacts with the environment, a phase flip effect might occur. This leads to an error called \emph{phase flip error} or \emph{T2~error}.
\end{itemize}

Recent developments in the physical realization of quantum computers (such as, e.g., in~\cite{Devoret1169, Kelly2018}) show significant improvements in the coherence times and improved possibilities to reduce unwanted interactions of qubits---improving the ``lifetime'' of qubits before decaying to~$\ket{0}$ and reducing the frequency of phase flip errors, respectively. Nevertheless, the underlying errors are still a dominating aspect in all quantum computations and, hence, should also be considered during simulation.%

However, in order to describe them mathematically, the formulation in terms of %
state vectors as reviewed in Section~\ref{sec:bg_quantum} obviously is not sufficient.
Moreover, even a deterministic formulation is not suitable since decoherence heavily relies on probabilistic effects that are not known in advance.
Hence, a description is needed which incorporates all possible states a quantum system may be in (including the original state but also states resulting from any of the decoherence effects mentioned above with a certain probability). This is accomplished by extending the vector representation introduced in Section~\ref{sec:background} to \emph{density matrices} (also known as \emph{density operators}) as follows:

\begin{definition}
\label{def:density_matrix}
Let $\ket\phi$ be a complex vector representing the state of a quantum system. The corresponding \emph{density matrix} is defined as
\begin{gather}
\begin{aligned}
\rho = \ket{\phi}\bra{\phi} \mbox{ with } \bra{\phi} \coloneqq \ket{\phi}^{\dagger}.\label{eq:mixed_state}
\end{aligned}
\end{gather}
\end{definition}

\begin{example}
\label{exp:density_matrix}
Consider a system, which is in the state
\[
\ket{\psi} = \frac{1}{\sqrt{2}} \cdot \ket{00} + 0 \cdot \ket{01} + 0 \cdot \ket{10} + \frac{1}{\sqrt{2}} \cdot \ket{11},
\]
or, using vector notation, $\sfrac{1}{\sqrt{2}}\cdot\begin{bNiceMatrix}[small] 1&0&0&1\end{bNiceMatrix}^\top$. The corresponding \emph{density matrix} $\rho$ %
is given by
\newcommand\hlight[1]{\tikz[overlay, remember picture,baseline=-\the\dimexpr\fontdimen22\textfont2\relax]\node[rectangle,fill=gray!50,fill opacity = 0.2,draw=gray!50,thick,text opacity =1] {$#1$};}
\begin{align*}
\begin{bmatrix}
    \frac{1}{\sqrt{2}} \\
    0 \\
    0 \\
    \frac{1}{\sqrt{2}} \\
\end{bmatrix}
\cdot
\begin{bmatrix}
    \frac{1}{\sqrt{2}} & 0 & 0 & \frac{1}{\sqrt{2}} \\
\end{bmatrix}
=
\begin{bmatrix}
    \hlight{\frac{1}{2}} & 0 & 0 & \frac{1}{2}  \\
    0 & \hlight{0} & 0 & 0  \\
    0 & 0 & \hlight{0} & 0  \\
    \frac{1}{2} & 0 & 0 & \hlight{\frac{1}{2}}  \\
\end{bmatrix}.
\end{align*}
In contrast to the original vector representation (as illustrated in Example~\ref{exp:matrxi_vector_mul}), the probabilities of measuring specific basic states are now reflected in the diagonal elements (highlighted in gray).
More precisely, the diagonal entries from the first element in the upper-left to the last element in the bottom-right represent the probabilities for measuring $\ket{00}, \ket{01}, \ket{10},$ and $\ket{11}$, respectively. Hence, measuring this state would yield $\ket{00}$ or $\ket{11}$---both with probability of $\sfrac{1}{2}$. %
All other elements of the density matrix represent the coherence in the state. %
\end{example}

Employing this concept allows to %
probabilistically apply decoherence, i.e., the application (or non-application) of decoherence effects by means of probabilities. More precisely, the effects of a decoherence error can be described by \emph{Kraus matrices} defined as follows:

\begin{definition}
\label{def:operator_sum}
Using the operator-sum representation, an error is represented by a tuple $(E_0,E_1, \dots ,E_m)$ of \emph{Kraus matrices} that satisfy the condition
\begin{gather}
  \begin{aligned}
    \sum_{i=0}^m E_i^{\dagger}E_i = I.\label{eq:kraus_condition}
  \end{aligned}
\end{gather}
Using this notation, the T1 and T2 errors can be represented by~\cite{NC:2000}
\begin{gather}
  \begin{aligned}
    T1 = (E_0, E_1) \mbox{ with } E_0 = \begin{bmatrix} 1 & 0\\ 0 & \sqrt{1-p} \end{bmatrix}, E_1=\begin{bmatrix} 0 & \sqrt{p}\\ 0 & 0 \end{bmatrix}\mbox{and} \label{eq:T1}
  \end{aligned}
\end{gather}
\begin{gather}
  \begin{aligned}
    T2 = (E_0, E_1) \mbox{ with } E_0=\sqrt{p} \cdot \begin{bmatrix} 1 & 0\\ 0 & 1 \end{bmatrix}, E_1 = \sqrt{1-p} \cdot \begin{bmatrix} 1 & 0\\ 0 & -1 \end{bmatrix}, \label{eq:T2}
  \end{aligned}
\end{gather}
respectively, where the variable $p$ represents the probability that an error occurs. This probability is a parameter of the specific quantum computer realization (and, hence, needs to be provided by the user).%
\end{definition}

Applying these error descriptions to the current quantum system (represented by a density matrix) can be conducted as follows:

\begin{definition}
\label{def:applying_error}
Applying an error specified by the Kraus matrices $(E_0,E_1, \dots ,E_m)$ to a quantum system given by the density matrix $\rho$ yields the density matrix~\cite{NC:2000}

\begin{gather}
  \begin{aligned}
    \rho^{\prime} = \sum_{i=0}^m E_i \rho E_i^{\dagger}.\label{eq:apply_error}
  \end{aligned}
\end{gather}
\end{definition}

\begin{example}
\label{exp:applying_noise}
In order to illustrate the concepts above, we apply the amplitude damping (T1) error to the state $\rho$ from Example~\ref{exp:density_matrix}. More precisely, we apply amplitude damping to the second qubit with a probability of 30~\% (p=0.3). The effects of this error are given by the Kraus matrices provided in Eq.~\ref{eq:T1}. Applying each Kraus matrix to the state $\rho$ (as defined in Eq.~\ref{eq:apply_error}) leads to
\newcommand\hlight[1]{\tikz[overlay, remember picture,baseline=-\the\dimexpr\fontdimen22\textfont2\relax]\node[rectangle,fill=gray!50,fill opacity = 0.2,draw=gray!50,thick,text opacity =1] {$#1$};}
\begin{align*}
\footnotesize
\setlength{\arraycolsep}{4pt}
\medmuskip = 2mu %
\underbrace{\begin{bmatrix}0.5&0&0&0.418\\0&0&0&0\\0&0&0&0\\0.418&0&0&0.35\end{bmatrix}}_{\mathit{E_0 \rho E_0^{\dagger}}} +
\underbrace{\begin{bmatrix}0&0&0&0\\0&0&0&0\\0&0&0.15&0\\0&0&0&0\end{bmatrix}}_{\mathit{E_1 \rho E_1^{\dagger}}} =
\underbrace{\begin{bmatrix}\hlight{0.5}&0&0&0.418\\0&\hlight{0}&0&0\\0&0&\hlight{0.15}&0\\0.418&0&0&\hlight{0.35}\end{bmatrix}}_{\mathit{\rho^{\prime}}}.
\end{align*}
The resulting density matrix accordingly describes the effect of the employed error:
While the probability for measuring $\ket{00}$ remains the same, the probability of measuring $\ket{11}$ has dropped to 35~\% and, additionally, there is now a probability of 15~\% to measure $\ket{10}$.
In other words, the probability that the second qubit is measured %
$\ket{0}$ has increased by 30~\%---reflecting the damping error assumed above.
\end{example}

Finally, since states are now represented by (density) matrices, %
applying an operation to a state has to be adjusted. Originally, given a quantum state $\ket{\phi}$ and a quantum operation $U$, the corresponding application is conducted by matrix-vector multiplication (as illustrated in Example~\ref{exp:matrxi_vector_mul}). Now, vector states $\ket{\phi}$ are represented by density matrices given by \mbox{$\rho = \ket{\phi}\bra{\phi}$} (cf.~Definition~\ref{def:density_matrix} and Eq.~\ref{eq:mixed_state}). Accordingly, applying $U$ onto $\rho$ is given by

\begin{gather}
  \begin{aligned}
    \rho' = U \rho U^{\dagger}.\label{eq:apply_op_densitymatrix}
  \end{aligned}
\end{gather}

\subsection{Effect to Simulation}
\label{subsec:effects}

\begin{figure*}[t]
	\begin{subfigure}[b]{0.29\linewidth}
		\centering
		\begin{tikzpicture}
		\matrix[matrix of nodes,ampersand replacement=\&,every node/.style={vertex},column sep={0.5cm,between origins},row sep={1cm,between origins}] (qmdd2) {
			\& \node (m1) {$q_0$}; \& \\
			\node (m2a) {$q_1$}; \& \&\node (m2b) {$q_1$}; \\
			\& \node[terminal] (t) {1}; \& \\
		};

		\draw ($(m1)+(0,0.5cm)$) -- (m1) node[right, midway]{$\sfrac{1}{\sqrt{2}}$};

		\draw (m1.-135) -- ($(m1)!0.5!($(m2a)!0.5!(m2b)$) + (-5mm,0)$) -- (m2a.90);
		\draw (m1.-45) -- ($(m1)!0.5!($(m2a)!0.5!(m2b)$) + (5mm,0)$) -- (m2b.90);

		\draw (m2a.-135) -- ($(m2a)!0.5!(t) + (-5mm,0)$) -- (t.150);
		\draw (m2a.-45) -- ($(m2a)!0.35!(t) + (1mm,0)$)node[zeroterm] {$0$};;

		\draw (m2b.-135) -- ($(m2b)!0.35!(t) + (-1mm,0)$) node[zeroterm] {$0$};;
		\draw (m2b.-45) -- ($(m2b)!0.5!(t) + (5mm,0)$) -- (t.30);;

		\end{tikzpicture}
		\caption{Decision diagram of a state vector}
		\label{fig:dd_rep_vector}
	\end{subfigure}\hfill
	\begin{subfigure}[b]{0.35\linewidth}
		\centering
		\begin{tikzpicture}
		\matrix[matrix of nodes,ampersand replacement=\&,every node/.style={vertex},column sep={0.5cm,between origins},row sep={1cm,between origins}] (qmdd2) {
			\&\&\& \node[draw = none] (top) {}; \&\&\& \\
			\&\&\& \node (m1) {$q_0$}; \&\&\& \\
			\node (m2a) {$q_1$}; \& \&\node (m2b) {$q_1$};  \& \& \node (m2c) {$q_1$}; \& \&\node (m2d) {$q_1$}; \\
			\&\&\& \node[terminal] (t) {1}; \&\&\& \\
		};

		\draw (top) -- (m1) node[right,midway] {$\sfrac{1}{2}$};

		\draw (m1.-135) -- ($(m1)!0.5!($(m2a)!0.5!(m2a)$) + (-5mm,0)$) -- (m2a.90);
		\draw (m1.-110) -- ($(m1)!0.5!($(m2b)!0.5!(m2b)$) + (-1.5mm,0)$) -- (m2b.90);
		\draw (m1.-70)  -- ($(m1)!0.5!($(m2c)!0.5!(m2c)$) + (1.5mm,0)$) -- (m2c.90);
		\draw (m1.-45)  -- ($(m1)!0.5!($(m2d)!0.5!(m2d)$) + (5mm,0)$) -- (m2d.90);

		\draw (m2a.-135) -- ($(m2a)!0.7!(t) + (-13.5mm,0)$) -- (t.170);
		\draw (m2a.-110) -- ($(m2a)!0.35!(t) + (-6mm,0)$) node[zeroterm] {$0$};;
		\draw (m2a.-70) -- ($(m2a)!0.35!(t) + (-4mm,0)$) node[zeroterm] {$0$};;
		\draw (m2a.-45) -- ($(m2a)!0.35!(t) + (-2mm,0)$) node[zeroterm] {$0$};;

		\draw (m2b.-135) -- ($(m2b)!0.35!(t) + (-4mm,0)$) node[zeroterm] {$0$};;
		\draw (m2b.-110) -- ($(m2b)!0.7!(t) + (-5mm,0)$) -- (t.150);
		\draw (m2b.-70) -- ($(m2b)!0.35!(t) + (0mm,0)$) node[zeroterm] {$0$};;
		\draw (m2b.-45) -- ($(m2b)!0.35!(t) + (2mm,0)$) node[zeroterm] {$0$};;

		\draw (m2c.-135) -- ($(m2c)!0.35!(t) + (-2mm,0)$) node[zeroterm] {$0$};;
		\draw (m2c.-110) -- ($(m2c)!0.35!(t) + (0mm,0)$) node[zeroterm] {$0$};;
		\draw (m2c.-70) -- ($(m2c)!0.7!(t) + (5mm,0)$) -- (t.30);
		\draw (m2c.-45) -- ($(m2c)!0.35!(t) + (4mm,0)$) node[zeroterm] {$0$};;

		\draw (m2d.-135) -- ($(m2d)!0.35!(t) + (2mm,0)$) node[zeroterm] {$0$};;
		\draw (m2d.-110) -- ($(m2d)!0.35!(t) + (4mm,0)$) node[zeroterm] {$0$};;
		\draw (m2d.-70) -- ($(m2d)!0.35!(t) + (6mm,0)$) node[zeroterm] {$0$};;
		\draw (m2d.-45) -- ($(m2d)!0.7!(t) + (13.5mm,0)$) -- (t.10);
		\end{tikzpicture}
		\caption{Decision diagram of a density matrix}
		\label{fig:dd_rep_matrix}
	\end{subfigure}\hfill
		\begin{subfigure}[b]{0.35\linewidth}
		\centering
		\begin{tikzpicture}
		\matrix[matrix of nodes,ampersand replacement=\&,every node/.style={vertex},column sep={0.5cm,between origins},row sep={1cm,between origins}] (qmdd2) {
			\&\&\& \node[draw = none] (top) {}; \&\&\& \\
			\&\&\& \node (m1) {$q_0$}; \&\&\& \\
			\node (m2a) {$q_1$}; \& \&\node (m2b) {$q_1$};  \& \& \node (m2c) {$q_1$}; \& \&\node (m2d) {$q_1$}; \\
			\&\&\& \node[terminal] (t) {1}; \&\&\& \\
		};

		\draw (top) -- (m1) node[right,midway] {$\sfrac{1}{2}$};

		\draw (m1.-135) -- ($(m1)!0.5!($(m2a)!0.5!(m2a)$) + (-5mm,0)$) -- (m2a.90);
		\draw (m1.-110) -- ($(m1)!0.5!($(m2b)!0.5!(m2b)$) + (-1.5mm,0)$) -- (m2b.90);
		\draw (m1.-70)  -- ($(m1)!0.5!($(m2c)!0.5!(m2c)$) + (1.5mm,0)$) -- (m2c.90);
		\draw (m1.-45)  -- ($(m1)!0.5!($(m2d)!0.5!(m2d)$) + (5mm,0)$) -- (m2d.90);

		\draw (m2a.-135) -- ($(m2a)!0.7!(t) + (-13.5mm,0)$) -- (t.170);
		\draw (m2a.-110) -- ($(m2a)!0.35!(t) + (-6mm,0)$) node[zeroterm] {$0$};;
		\draw (m2a.-70) -- ($(m2a)!0.35!(t) + (-4mm,0)$) node[zeroterm] {$0$};;
		\draw (m2a.-45) -- ($(m2a)!0.35!(t) + (-2mm,0)$) node[zeroterm] {$0$};;

		\draw (m2b.-135) -- ($(m2b)!0.35!(t) + (-4mm,0)$) node[zeroterm] {$0$};;
		\draw (m2b.-110) -- ($(m2b)!0.7!(t) + (-5mm,0)$) -- (t.150) node [label={[xshift=-8mm, yshift=-0.5mm] $\small 0.836$}] {};
		\draw (m2b.-70) -- ($(m2b)!0.35!(t) + (0mm,0)$) node[zeroterm] {$0$};;
		\draw (m2b.-45) -- ($(m2b)!0.35!(t) + (2mm,0)$) node[zeroterm] {$0$};;

		\draw (m2c.-135) -- ($(m2c)!0.35!(t) + (-2mm,0)$) node[zeroterm] {$0$};;
		\draw (m2c.-110) -- ($(m2c)!0.35!(t) + (0mm,0)$) node[zeroterm] {$0$};;
		\draw (m2c.-70) -- ($(m2c)!0.7!(t) + (5mm,0)$) -- (t.30) node [label={[xshift=1mm, yshift=-0.5mm] $\small 0.836$}] {};
		\draw (m2c.-45) -- ($(m2c)!0.35!(t) + (4mm,0)$) node[zeroterm] {$0$};;

		\draw (m2d.-135) -- ($(m2d)!0.35!(t) + (2mm,0)$) node[zeroterm] {$0$};;
		\draw (m2d.-110) -- ($(m2d)!0.6!(t) + (7mm,0)$) -- (t.20) node [label={[xshift=8mm, yshift=0.5mm] $\small 0.3$}] {};
		\draw (m2d.-70) -- ($(m2d)!0.35!(t) + (6mm,0)$) node[zeroterm] {$0$};;
		\draw (m2d.-45) -- ($(m2d)!0.7!(t) + (13.5mm,0)$) -- (t.10) node [label={[xshift=14mm, yshift=0.7mm] $\small 0.7$}] {};
		\end{tikzpicture}
		\caption{State after applying T1 error}
		\label{fig:dd_after_to_noise}
	\end{subfigure}
	\vspace*{-2mm}
	\caption{Decision diagram representation of states}
	\label{fig:dd_rep_examples}
	\vspace*{-4mm}
\end{figure*}

Having the mathematical description of decoherence errors as reviewed above, simulation approaches can accordingly be extended.
This is particularly straightforward for array-based approaches as proposed in~\cite{DBLP:journals/corr/WeckerS14,DBLP:journals/corr/SmelyanskiySA16,qxSimulator2017,qiskit,Steiger2018projectqopensource,CirqPythonFramework,atos2016} and reviewed in Section~\ref{sec:array_based_sim}.
Here, the major challenge of considering decoherence is ``only'' given by the fact that the state is represented by density matrices rather than vectors.
This can simply be addressed by extending the corresponding data structures (i.e., the arrays). The required operations (in particular, for multiplying and adding matrices)
are supported by the corresponding libraries anyway and can also be extended in a straightforward fashion. Also, improvements employed by parallel executions can readily be utilized. Because of that,
implementations of array-based simulation approaches supporting the consideration of decoherence are already available (see, e.g.,~\cite{qiskit,atos2016,qxSimulator2017,DBLP:journals/corr/WeckerS14,CirqPythonFramework,jones2018quest,DBLP:journals/corr/SmelyanskiySA16}).

For approaches based on decision diagrams, the consideration of decoherence errors, however, may pose much more severe challenges (which have not be considered in the literature thus far). First, it remains open how severely the consideration of decoherence errors (and the corresponding need of representing states and operations through density matrices) harms the ability of decision diagrams to represent states and operations in a compact fashion. As reviewed in Section~\ref{subsec:dd_simulation}, being able to represent certain quantum states and quantum operations in a more compact fashion constitutes one of the main advantages of simulation using decision diagrams.
The question remains whether this compactness can still be maintained when decoherence errors are additionally considered.
To this end, consider the following example:

\begin{example}
Recall the state considered before in Example~\ref{exp:density_matrix} in both the vector as well as in the density matrix representation. %
The corresponding decision diagram representations %
are provided in Fig.~\ref{fig:dd_rep_vector} and Fig.~\ref{fig:dd_rep_matrix}, respectively.
As can be seen, the size of the decision diagrams are rather similar (4 nodes vs.~6 nodes, although the corresponding vector/density matrix have a size of~$2^2$ and~$2^{2}\times 2^{2}$). %
This, at least, shows that considering decoherence errors does not necessarily harm the ability of decision diagrams to represent states/operations in a compact fashion.\footnote{Note that this does not mean that decision diagrams \emph{always} provide a compact representation for a quantum state/operation. In fact, previous work~\cite{zulehner2017advanced} clearly showed that the worst-case complexity of decision diagrams is exponential---even though polynomial representations are possible for certain applications. The example, however, shows that this characteristic is not completely lost when considering decoherence errors.}
Moreover, also more detailed evaluations (summarized later in Section~\ref{sec:eval}) confirm this observation.
\end{example}

Considering the example (and the evaluations summarized in Section~\ref{sec:eval}) suggests that decision diagrams might remain compact in many cases---even if decoherence errors are considered.
But having a compact representation alone is not sufficient. Also efficient realizations of the corresponding matrix-matrix operations (most notably multiplication and addition), as reviewed in Section~\ref{subsec:rep_errors}, are required. For multiplication, related work such as~\cite{zulehner2017advanced} already provides efficient solutions since matrix-matrix multiplication already is a core operation of simulation without decoherence. Addition, however, which is required for applying the error effect as defined in Eq.~\ref{eq:apply_error}, has not been that frequently required thus far and turns out to be particularly challenging.

More precisely, recall that adding two matrices is done by adding all elements sharing the same index. Hence, this requires access to \emph{all} single matrix elements---something for which a decision diagram has to be \emph{completely} traversed. This is in stark contrast with multiplication, where addition is required as well, but the operands are often just sub-parts of the involved decision diagrams (which substantially reduces the size of the decision diagrams that need to be traversed).
Additionally, decision diagram representations of operations are of very sparse nature, so that during the multiplication often one part of the addition equals zero.

Overall, this suggests that decision diagrams also show promise for quantum circuit simulation when considering decoherence errors (something which has not been considered thus far). At the same time, it also unveils challenges which remains to be addressed, namely how to efficiently %
apply the decoherence to the state without having to traverse the entire decision diagram.

\section{Advanced Simulation Approach}
\label{sec:opt}

In order to address the shortcomings unveiled above, we investigated how the required operations (particularly Eq.~\ref{eq:apply_error}) can efficiently be realized on decision diagrams. A major obstacle is that applying decoherence effects heavily relies on the addition of matrices which requires access to \emph{all} single matrix elements and, in turn, triggers the complete traversal of the decision diagrams---causing an exponential overhead independently of how compact they can be represented.

Accordingly, we looked for alternatives that either completely avoid the addition of matrices or, at least, only conduct it on (smaller) sub-matrices. %
Our investigations eventually resulted in such alternatives whose main idea rests on the following three observations:

First, %
adding two matrices is not always necessary. In particular, the T2 error can be described by multiplications only. In fact, w.l.o.g., the effect of this error on a single qubit can be described by
\begin{align*}
\begin{bmatrix}
    a & b\\
	c & d
\end{bmatrix}
\longmapsto
\begin{bmatrix}
    a & (2p-1)b\\
	(2p-1)c & d
\end{bmatrix}
,
\end{align*}
where $p$ represents the probability. That is, two of the elements are not changed at all, while the remaining ones are just multiplied by $2p-1$. Hence, applying the T2 error can be reduced to two multiplications---without the need for any addition. %

Second, applying the error as specified in Eq.~\ref{eq:apply_error} is inefficient and allows to apply only one error effect to one qubit at a time. By explicitly enforcing the error effects directly on the corresponding nodes of the affected qubits, we can apply all desired effects to all qubits with just one traversal of the decision diagram.

Third, if the matrix is represented in terms of decision diagrams, it is not always necessary to do the addition on the entire matrix.
In fact, in decision diagrams, every qubit is represented by one or more nodes. Applying a decoherence error to a qubit actually only modifies the outgoing edges from the nodes representing this specific qubit.
All predecessor nodes are only indirectly affected when the edge weights are normalized (as described in Section~\ref{subsec:dd_simulation}).

Based on those observations, we are proposing an advanced method of applying this operation on decision diagrams:
Instead of doing the matrix-matrix multiplications followed by the addition separately, we apply the decoherence effects in one step---exploiting our observation that applying an operation to a qubit only modifies the outgoing edge weights of nodes representing it. Decoherence can therefore accordingly be applied by directly modifying all those edges. In doing so, we also gain full control over how the operation is applied---allowing us to exploit the first two observations as well.

\begin{example}
\label{exp:directly_applying_noise}
The advanced approach is illustrated by reusing Example~\ref{exp:applying_noise}. Recall that, in this example, we apply an amplitude damping~(T1) decoherence error with a probability of 30~\% to $q_1$ of the quantum state $\rho$ from Example~\ref{exp:density_matrix}. In contrast to the earlier example, we now apply the error directly to the decision diagram of $\rho$ (given in Fig.~\ref{fig:dd_rep_matrix}).
To this end, we apply the effects of the T1 error to all nodes labeled~$q_1$ leading to the following transformations
\begin{align*}
\begin{bmatrix}
    a & b\\
	c & d
\end{bmatrix}
\longmapsto
\begin{bmatrix}
    a+dp & b\sqrt{1-p}\\
	c\sqrt{1-p} & d-dp
\end{bmatrix}.
\end{align*}
As defined in Section~\ref{subsec:dd_simulation}, the four outgoing edges of a node in a decision diagram represent the matrix elements a, b, c and d from left to right. Hence, modifying the fourth node labeled $q_1$ with probability $p=0.3$ leads to
\begin{align*}
\begin{bmatrix}
    0 & 0\\
	0 & 1
\end{bmatrix}
\longmapsto
\begin{bmatrix}
    0 + 1 \cdot 0.3 & 0 \\
	0 & 1 - 1 \cdot 0.3 \\
\end{bmatrix}
=
\begin{bmatrix}
    0.3 & 0\\
	0 & 0.7
\end{bmatrix}
\end{align*}
The other nodes labeled $q_1$ are modified in the same way, leading to the new decision diagram shown in Figure~\ref{fig:dd_after_to_noise}. This new decision diagram represents $\rho$ after the T1 decoherence error has been applied and is equal to $\rho^{\prime}$ from Example~\ref{exp:applying_noise}.
\end{example}

\section{Evaluation}
\label{sec:eval}

\begin{table*}[ht]
		\vspace{.75cm}
	\caption{Experimental results}
	\label{tab:results}
	\setlength{\tabcolsep}{8pt}
	\centering
	\begin{tabular}{r|rr|rr|rr|rr}
		& \multicolumn{4}{c|}{Array-based} & \multicolumn{4}{c}{Decision diagram-based} \\
		& \multicolumn{2}{c|}{QLM} & \multicolumn{2}{c|}{Qiskit} & \multicolumn{2}{c|}{Without Improvement} & \multicolumn{2}{c}{With Improvement} \\
		\#Qubits & Mem\,[MB] & Time\,[s] & Mem\,[MB] & Time\,[s] & Mem\,[MB] & Time\,[s] & Mem\,[MB] & Time\,[s] \\\hline\hline
		\csvreader[
		late after line=\\,
		late after last line=\\\cline{2-9},
		]{csv/results_AD.csv}
		{1=\Name, 2=\Ngates, 3=\TimeQL, 4=\MemLi, 5=\TimeQX, 6=\MemQX, 7=\TimeQP, 8=\MemQP, 9=\Time}
		{\Name  & \Ngates & \TimeQL & \MemLi & \TimeQX & \MemQX & \TimeQP & \MemQP & \Time}
		\end{tabular}
\end{table*}

In this section, we summarize the core results of our evaluations conducted in order to investigate the effect of considering decoherence errors in the simulation of quantum circuits using decision diagrams.
To this end, we took the state-of-the-art decision \mbox{diagram-based} simulator from~\cite{zulehner2019package,zulehner2017advanced} and extended this implementation to additionally support decoherence errors. This led to one version in which error support has been added in a straightforward fashion (i.e., directly applying the concepts described in Section~\ref{subsec:rep_errors}) and another version in which error support has been added in an advanced fashion (i.e., applying the methods described in Section~\ref{sec:opt}). In addition to that and for the purpose of comparison, we also considered two state-of-the-art array-based simulators, namely  \emph{Linalg} from the commercial \emph{Atos Quantum Learning Machine} (QLM)~\cite{atos2016} as well as the \emph{density\_matrix} simulator from IBM's Qiskit~\cite{qiskit}.

For the evaluations, we assumed the amplitude damping (T1) error with 0.2~\% probability and the phase flip (T2) error with 0.1~\% probability (applied each time a qubit has been used).
As quantum algorithm, we considered the \emph{Quantum Fourier Transform}~(QFT~\cite{NC:2000}) %
with an increasing number of qubits. %
This is an ideal choice for the purpose of this evaluation, since QFT (1)~constitutes a core element of numerous existing quantum applications (such as Shor's factorization method~\cite{DBLP:journals/siamcomp/Shor97}, quantum phase estimation~\cite{NC:2000} and the hidden subgroup problem~\cite{NC:2000}),
(2)~is an established benchmark for evaluating the effects of decoherence errors in related work (e.g.,~\cite{Chaudhary2019}), and
(3)~additionally has the benefit that, thus far, it represents one of the best cases for simulation using decision diagrams without considering decoherence (showing a linear scalability in memory and \mbox{run-time}  with respect to the number of qubits). Therefore, the effects of considering decoherence errors can ideally be investigated using QFT.

All evaluations have been conducted on a system using 5 cores running at a clock frequency of 2.2~GHz and 1.5~TB of RAM. While the QLM simulator runs directly on this system, we ported the Qiskit simulator and the simulators using decision diagrams to this machine utilizing Docker~\cite{Merkel:2014:DLL:2600239.2600241}. We choose Docker since its virtualization overhead is negligible~\cite{Felter2015}. By this, all simulators have been evaluated using the same hardware resources.

Table~\ref{tab:results} summarizes the obtained results. The first column provides the number of considered qubits. In the remaining columns, we list the peak memory usage in MB as well as the total simulation time in real time seconds for all considered approaches, i.e., Atos' and IBM's array-based QLM and Qiskit, respectively, as well as the considered decision diagrams-based approach with and without the improvement from Section~\ref{sec:opt}. Note that the accumulated CPU time of the array-based approaches would be substantially larger than the real time values listed in
Table~\ref{tab:results}, since both approaches heavily utilize concurrency enabled by the available five cores during the simulation. Cells without any entries represent instances where the timeout of one hour has been exceeded.

The results clearly confirm the observations from above: Considering decoherence errors during simulation does not necessarily harm the compact representation of decision diagrams.
In fact, the respective memory requirements for the decision diagrams remain rather moderate (never more than 150~MB), while they sky-rocket for the array-based approaches (certainly, the main reason why those approaches only scale up to 15 or 14 qubits, respectively).
At the same time, it also can be seen that \mbox{run-time}  becomes much more the limiting factor for the decision \mbox{diagram-based} simulation. This confirms the discussion from Section~\ref{subsec:effects}
and shows the impact of the advanced method of conducting the required operations as described in Section~\ref{sec:opt}---eventually yielding improvements of several orders of magnitude and more than twice the scalability.

\section{Conclusion}
\label{sec:conclusion}
Decision diagrams provide a promising alternative for quantum circuit simulation due to their capability of representing vectors and matrices in a much more compact fashion than, e.g., array-based methods. But no work existed yet which
investigated whether these promising effects can be maintained when decoherence errors---still, a dominating aspect in quantum computing---are additionally assumed.
This work sheds light on this. We observed that considering decoherence errors not necessarily harms the compact representation, but leads to new challenges
with respect to conducting the respectively required operations in a \mbox{run-time-efficient} fashion. In order to address these challenges an advanced method has been proposed, which mitigates the negative effects and led to improvements of several orders of magnitudes. By this, we showed that quantum circuit simulation using decision diagrams remains a promising approach also when decoherence errors are considered.

\begin{acks}
This work has partially been supported by the University of Applied Sciences PhD program of the State of Upper Austria (managed by the FFG), by the LIT Secure and Correct Systems Lab funded by the State of Upper Austria, as well as by the BMK, BMDW, and the State of Upper Austria in the frame of the COMET program (managed by the FFG).
\end{acks}
\newpage

\bibliographystyle{ACM-Reference-Format}

redpajama_set_name: RedPajamaArXiv


text:
Symbiosis School of Economics M.Sc Economics Admission 2023 Application Form, Dates, Eligibility
Symbiosis School of Economics Pune announces admission to MSc Program in Economics for Session 2023-25, Apply Now
SSE Pune M.Sc. Economics Admission 2023 – Symbiosis School of Economics (SSE), Pune invites online applications for admission to two-year Master of Science (M.Sc.) program in Economics for the academic year 2023-25.
SSE Pune M.Sc. Economics Admission 2023
Programme Registration Begins : 1st December 2022
Last date of Online registration : 30th May 2023
Last date of payment of Registration fees : 30th May 2023
Announcement of the Shortlist for Personal Interaction : 2nd June 2023
Personal Interaction : 7th , 8th , 9th June 2023
Announcement of First Merit list : 16th June 2023
Last date for payment of fees for candidates in the first merit list : 23rd June 2023
Programme Commencement : 17th July 2023
Graduate from any recognised University/ Institution of National Importance with a minimum of 50% marks or equivalent grade (45% marks or equivalent grade for Scheduled Caste / Scheduled Tribes).
Any graduate with exposure to Economics/Mathematics/Statistics/Physics are welcome.
B.Tech and B.E. graduates may also apply. Graduates from any statutory university with a minimum of 50% marks or equivalent grade (45% or equivalent grade for SC/ST) at graduation level.
Students appearing for final year examinations can apply but their admission will be subject to obtaining a minimum of 50% marks or equivalent grade (45% or equivalent grade for SC/ST) at qualifying examination.
The applicants can register online at the official website https://www.sse.ac.in/ & https://siu.ishinfo.com/SIUPGFY23/Register/
The candidates are desirous to seek admission to be required to apply online. Only those applicants, who apply online before the last date and satisfy the eligibility criteria, will be considered for admission.
For details about SET, kindly visit https://www.sse.ac.in/, the applicant will receive a prospectus from Symbiosis School of Economics.
Application Fee : Rs. 750/-
Mode of Payment : Online through Credit Card / Debit Card / Net Banking
Students will be selected on the basis of Personal Interaction (PI) to be conducted Online.
Personal Interaction – Interaction with a panel of faculty members / experts who try to comprehend the knowledge and understanding of the candidate with respect to Economics, Mathematics and Statistics.
Admission Notifications and Dates 2022
Latest Entrance Exam Notifications and Dates 2022

redpajama_set_name: RedPajamaCommonCrawl


What gave you the idea for Glimmerglass Girl?
The title of this book comes from the lead poem, "Espejitos," (appears in Isacoustic: https://isacoustic.com/2018/04/14/person-holly-lyn-walrath-one-poem/) which refers to the Spanish name for the glass-winged butterfly and translates to "little mirrors." When I started to research this butterfly, I discovered that although it appears to be delicate and fragile with transparent wings, it's actually quite poisonous and capable of pulling up to 40 times its weight. I thought this was a fitting metaphor for womanhood because women are often expected to be fragile or more sensitive when, in fact, we are quite resilient. Butterflies also have a long tradition in folklore as being representative of the souls of the dead, so this mascot appealed to my love of dark things.
I've written poetry since I was in high school. Poetry is my first love, and my friends can tell you that I will try to convert anyone I meet to the cult of the poetic. Poetry wraps all my favorite things about writing into a neat package: lyricism, imagery, voice, sound, rhythm, and concise word choice.
I've worked at a jeans store, as a financial advisor, at an ice cream shop, at a print shop, as a receptionist, any number of odd jobs. About four years ago, I told myself I was going to commit to my writing. It just happened to happen at a time when my life was shifting and I was able to quit my job. I started freelancing and writing full-time. I don't regret that decision at all, I just regret that it took me so long to get there.
What is the writing process like for you? What is your writing day like? What have been the biggest influences on your writing?
My writing routine changes all the time because my schedule as a freelance editor is constantly shifting. On a good writing day, I sit down to read on my patio and get some inspiration from books I love. Then I'll write for an hour or so, sometimes working from prompts or just playing around. There are times where I write every day, but for the most part I have to take the time for my work. It's not easy to juggle all the demands of the world. I also like to play with writing every day in NaPoWriMo and NaNoWriMo.
One of my favorite books is The Lord of the Rings. When I was a little kid, my mom would read The Hobbitto me and do all the voices. In middle school I got obsessed and read the whole series, but I was so devastated when Gandalf "died"! Now when I look back on those books, I realize that they have shortcomings too. These days I'm reading more women's voices and trying to widen my scope of reading experience. But I still have a soft spot for Gollum . . . my precious.
One of my favorite stories that I've written is "The Joy of Baking," which first appeared in Luna Station Quarterly and is available in audio version on my website. (http://www.hlwalrath.com/thejoyofbaking.html). I wrote this story for my spouse, who is a physical therapist in a cardiology unit at a children's hospital. He deals with death, and in particular the death of children, on a daily basis. I like to bake and James will often help me out in the kitchen. One day, I was looking for a new story idea and he begged me to write a story about baking . . . which quickly evolved into a little tale that answers the question: What if purgatory came with free cake?
I'm working on several projects at once because I get bored easily. My ongoing project is a series of erasures of male canonical authors like Hemingway and Cormac McCarthy. I'm also working on a series of tiny poems, trying to compress my writing as much as possible. And of course, I'm always working on short stories in the science fiction and fantasy realm.
I love the writing advice of Chuck Wendig, "You do you." I think being yourself and advocating for the things you love is one of the best ways to approach writing. We all want to be successful, to get our names out there, but if you're not doing what you love, what's the point? Even though the things I write are often cross-genre and intersectional, combining art and words or realism and the fantastical, I don't mind that these are considered "experimental." I write what I love, what excites me, what feels true. That's the best advice writers can follow, as corny as it sounds.
Holly Lyn Walrath's poetry and short fiction has appeared in Strange Horizons, Fireside Fiction, Luna Station Quarterly, Liminality, and elsewhere. Her chapbook of words and images, Glimmerglass Girl,will be published by Finishing Line Press in 2018. She holds a B.A. in English from The University of Texas and a Master's in Creative Writing from the University of Denver. She is a freelance editor and host of The Weird Circular, an e-newsletter for writers containing submission calls and writing prompts.


text:
Граф Дракула фон Знак, также известный как Граф Знак () — герой детского шоу «Улица Сезам», появившийся в 1972 году. Представляет собой вампира а-ля Бела Лугоши в роли Дракулы, помешанного на подсчёте предметов. Дебютировал в шоу в 1972 году в 4-м сезоне, считая кубики в скетче с участием Власа и Еника.

Описание

Любовь к счёту
Граф Знак в шоу обучает детей счёту предметов. Будучи дружелюбным, он буквально помешан на счёте и обязательно считает всё, что ему подвернётся под руку, что иногда возмущает других героев шоу. Так, в выпуске 0746 (6-й сезон 1975 года) он заставил Еника отвечать на телефонные звонки, пока будет что-нибудь считать, однако когда телефон начал звонить, сам стал считать звонки (коих было 5), не давая Енику взять трубку. Когда Еник добрался до трубки, звонить уже прекратили, в ответ на что Знак упрекнул Еника в медлительности, хотя сам предупреждал, что отвечать на звонки нелегко. В выпуске 2283 (18-й сезон, 1987), работая лифтёром, он не мог отвезти Кермита на нужный этаж, поскольку увлёкся подсчётом этажей. В выпуске 3489 (27-й сезон, 1996) он хитростью заставил Оскара сказать «Нет» 17 раз, поскольку пытался найти что-либо, что соответствовало бы числу 17. Всякий раз Граф возмущается, если его сбивают со счёта, и грустит, если ему нечего посчитать.

Согласно BBC News, радиоведущий Тим Харфорд, работающий на программе More or Less, взял интервью у Графа Знака, который назвал своим любимым числом 34969, поскольку это «вещь с квадратным корнем» (это квадрат числа 187). Также Граф шутил, что всегда появляется из любой точки мира на экранах в 14:30, поскольку в это время выходит сюжет с ним, или в относительно позднее время (14:31).

Быт
Граф фон Знак живёт в старинном замке, где много паутины, с летучими мышами и кошкой по кличке Фаталита. В выпусках показывается Бельвередский замок в Центральном парке Нью-Йорка как место жительства графа. Своё детство он провёл в Карпатах, а сам говорит с сильным восточноевропейским акцентом, что отчасти подтверждает версию о его румынском происхождении. Его летучие мыши носят русские имена — Гриша, Миша, Саша и Татьяна. Граф называет их своими детьми и сам их пересчитывает. В доме Знака постоянно скрипучая дверь, и каждый раз, когда кто-то говорит о скрипящей двери, то сбивает Графа со счёта. У него есть собственный автомобиль — Знакмобиль (отсылка к Бэтмобилю). В шоу упоминаются многочисленные возлюбленные Графа, также являющиеся графинями. Это Графиня Наоборот (), которая появилась в 28-м сезоне шоу и отличается тем, что всегда считает наоборот; графиня Далинг фон Далинг (с 12-го сезона) и просто женщина по имени Графиня (с 8-го сезона). Граф упоминал среди родственников брата, маму, дядюшку Уно и бабушку с дедушкой. Внешне Знак похож на вампира клыками, но при этом отражается в зеркале и гуляет на солнце.

Исполнение
Фирменной песней графа является песня «The Song of the Count», написанная Джеффом Моссом по мотивам венгерского чардаша (в принципе, музыкальное сопровождение в сюжетах с Графом основано на венгерской или еврейской музыке). Роль Графа исполнял Джерри Нельсон, который был кукловодом многих персонажей до 2004 года, но после болезни остался только кукловодом Графа. Через несколько лет он доверил обязанности кукловода Мэтту Фогелю, сохранив за собой озвучку. После кончины Нельсона в 2012 году Фогель стал и голосом Графа Знака, и кукловодом.

История
Первая серия с участием Знака состоялась в сезоне 4 (серия 406), автором персонажа считается Норман Стайлз, который написал сценарий для первой серии с его участием. Фирменное приветствие Графа Знака на английском звучало как «Greetings. I am the Count. They call me the Count, because I LOVE to count... things». Имя было игрой слов, поскольку слово count означает и титул графа, и глагол «считать», но эта игра в переводе на другие языки терялась. В первой серии Еник просил Власа присмотреть за его пирамидой из кубиков, пока он бегал за фотоаппаратом. Рядом проходил Граф Знак, который начал считать кубики в пирамиде и разобрал пирамиду Еника, несмотря на попытки Власа помешать Знаку. Затем Знак собрал пирамиду, пересчитав кубики, но, не поняв, чего требовали Эрни и Влас, опять разобрал пирамиду. Джерри Нельсон озвучивал Графа до своей смерти, а затем кукловодом и голосом стал Мэтт Фогель, который дебютировал с песней «Counting the Yous in YouTube», посвящённой миллиарду просмотров канала Улицы Сезам на Youtube.

В первых выпусках Граф Знак выглядел как злодей, поскольку появлялся с закрытым плащом лицом, как у Бела Лугоши под сопровождение нагнетающей атмосферу органной музыки, а если ему кто-то мешал, то граф кричал «Молчать!» () и благодаря жестам рук и гипнотической силе заставлял людей не шевелиться. Характерным для Графа был маниакальный смех под свет вспышек молний и звук грома в тёмных тонах, а затем Граф удалялся в той же манере, что и появлялся. Продюсеры шоу решили, что такой Граф отпугнёт юных зрителей, и смягчили его поведение, сделав его смех более торжественным в стиле Дракулы, а характер — более дружелюбным. С 33-го сезона Знак появляется в «Улице Сезам» ежедневно в рубрике «Число дня» ().

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

Граф несёт в себе заметное сходство с Белой Лугоши в роли графа Дракулы, в том числе обладает аналогичным акцентом. Но, несмотря на наличие клыков, он отличается от других вампиров не только козлиной бородкой и моноклем. Например, большинство вампиров ведут ночной образ жизни, так как солнечный свет для них смертелен, Знак же, напротив, даже любит свет и спокойно гуляет на улице днём, а ночью спит. Кроме того, он не пьет кровь, не спит в гробу и во многих отношениях больше похож на человека, чем на вампира. Тем не менее, у Знака есть одна характерная для вампира черта: он не отражается в зеркале (хотя и это в некоторых сериях опровергается).

В разных странах
 В оригинальной англоязычной версии имя Знака («Count von Count») представляет собой игру слов: слово «сount» одновременно означает и «граф» и «счёт».
 В голландской версии Улицы Сезам у Знака имя «Graaf Tel» (буквально, «Граф Знак»)
 Во французской версии его зовут «Comte von Compte».
 В немецкой версии его зовут «Graf Zahl» (буквально, «Граф Количество»).
 В версии на иврите его зовут «'מר סופר», фонетически произносится как «мар Софер», что буквально означает «Граф Подсчет».
 В мексиканской версии его зовут «El Conde Contar» (буквально, «Граф Подсчет»).
 В польской версии его зовут «Liczyhrabia»
 В португальской версии его имя «Conde de Contar».
 В испанской версии его зовут «El Conde Draco» («Граф Дракула»).
 В турецкой версии его зовут «Sayıların Kontu» (буквально, «Граф чисел»).
 В русской версии его зовут «Граф фон Знак».

Примечания

Персонажи-вампиры
Кукольные персонажи
Улица Сезам
Вымышленные графы и графини

redpajama_set_name: RedPajamaWikipedia


I would like to limit the length of intro text, if possible (and I know it's possible but it would be quite complicated in case of customization).
If anyone know the way or plugins doing like that, let me know.
The important point is that how to deal with the html source between tags or inside a tag. For instance, when the break point is <img src="ho (here would be the break point) ge" alt ="hoge">, image is not displayed.
I've resolved this issue by myself.
But any information about plugins would be appreciated.
There are no plugins that allow limiting of the article editor intro section. That would have to be built into the article editor itself.
This would require some changes with Geeklog itself as well since you would only want this to happen for the intro area.
For a different solution you could also look at COM_truncateHTML which we use to truncate rss feeds in Geeklog. It will remove mangled html tags and add any missing close tags. Of course to use something like this the article editor would have to be customized.
I just added the following lines before DB_save in the story.php.
You could define the word_length as $_CONF['word_length'] in custom config.file.


text:
Q: How to use a DepthBuffer as InputAttachment in Vulkan? I have some trouble implementing my DepthBuffer as InputAttachment of a secondary subpass. I want to use the depth information of my first subpass. How can I archieve this? It seems that my current code gives me just an empty buffer..
My depth buffer is setup as follows:
create_info.imageType       = VK_IMAGE_TYPE_2D;
create_info.format          = VK_FORMAT_D32_SFLOAT;
create_info.mipLevels       = 1;
create_info.arrayLayers     = 1;
create_info.samples         = VK_SAMPLE_COUNT_1_BIT;
create_info.tiling          = VK_IMAGE_TILING_OPTIMAL;
create_info.usage           = VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT | VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT;

I then use the following layout transition:
VkImageMemoryBarrier layout_transition_barrier{};
{
    barrier.sType                   = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER;
    barrier.srcAccessMask           = 0;
    barrier.dstAccessMask           = VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT
                                    | VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT;
    barrier.oldLayout               = VK_IMAGE_LAYOUT_UNDEFINED;
    barrier.newLayout               = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL;
    barrier.srcQueueFamilyIndex     = VK_QUEUE_FAMILY_IGNORED;
    barrier.dstQueueFamilyIndex     = VK_QUEUE_FAMILY_IGNORED;
    barrier.image                   = image;
    barrier.subresourceRange        = { VK_IMAGE_ASPECT_DEPTH_BIT, 0, 1, 0, 1 };
}

This works totally fine for rendering..
The VkAttachmentReference I use has the layout VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL and I use it as an VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER.
In my fragment shader I then use layout (set = 0, binding = 1) uniform sampler2D inputDepth; to access it, however without any success.. the information I get is only zeros for any color channel.

Further I use this dependency:
VkSubpassDependency dependency{};
{
    dependency.srcStageMask     = VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT;
    dependency.dstStageMask     = VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT;
    dependency.srcAccessMask    = VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT
                                | VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT;
    dependency.dstAccessMask    = VK_ACCESS_INPUT_ATTACHMENT_READ_BIT;
    dependency.dependencyFlags  = VK_DEPENDENCY_BY_REGION_BIT;
}

and this descritpion
static VkAttachmentDescription depth_input_attachment{};
{
    depth_input_attachment.format           = VK_FORMAT_D32_SFLOAT;
    depth_input_attachment.samples          = VK_SAMPLE_COUNT_1_BIT;
    depth_input_attachment.loadOp           = VK_ATTACHMENT_LOAD_OP_LOAD;
    depth_input_attachment.storeOp          = VK_ATTACHMENT_STORE_OP_DONT_CARE;
    depth_input_attachment.stencilLoadOp    = VK_ATTACHMENT_LOAD_OP_LOAD;
    depth_input_attachment.stencilStoreOp   = VK_ATTACHMENT_STORE_OP_DONT_CARE;
    depth_input_attachment.initialLayout    = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL;
    depth_input_attachment.finalLayout      = VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL;
}

A: If you're doing subpasses (and not multiple render passes) and want to use your depth buffer as an inputAttachment and want to use an attachment as an input for a second subpass,
layout (set = 0, binding = 1) uniform sampler2D inputDepth
is not the correct syntax to sample from that in your shader.
Sampling from an input attachment requires a special syntax:
layout (input_attachment_index = n, binding = m) uniform subpassInput inputDepth;
This also requires a descriptor of type VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT instead of VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER. Note that the actual descriptor for input attachments does not require a sampler.
If you're instead trying to sample your depth attachment in a second render pass, make sure that the storeOp of the attachment description is set to store.

redpajama_set_name: RedPajamaStackExchange