text:
ROPPENHEIM COMMUNAL CEMETERY
GPS Coordinates: Latitude: 48.84584, Longitude: 8.0575
Roppenheim village is close to the German border with Seltz being the nearest town. From Seltz travel South on the D468 to the village of Roppenheim. On entering the village the communal cemetery is situated on the left of the main road.
The Commonwealth War Graves Plot can be found on the right side of the entrance to the Cemetery.
Roppenheim Communal Cemetery contains the graves of two Commonwealth airmen of the First World War.
No. of Identified Casualties: 2
Lieutenant Edward Cartwright, Mentioned in Despatches, 104th Squadron, Royal Air Force, died 22nd August 1918, aged 19. Son of Thomas James and Ann Cartwright, of "Erlescote," Victoria Rd., Sutton Coldfield, Birmingham. His headstone bears the inscription "He Died For Freedom And Honour"
Lieutenant Arnold George Leighton Mullen, 104th Squadron, Royal Air Force and 5th Bn. Durham Light Infantry, died 22nd August 1918, aged 22. Son of Henry Joseph and Isabella Mullen. Born at Whitley Bay, Northumberland.
Pictures © Conrad Freeling
SESSENHEIM COMMUNAL CEMETERY
SOUFFLENHEIM COMMUNAL CEMETERY
WINTZENBACH PROTESTANT CHURCHYARD

redpajama_set_name: RedPajamaCommonCrawl


2018 International Keyboard Institute & Festival - 20th Anniversary!
You are now accessing our secure server. All of your information is secure and encrypted. Please fill out all fields below. You will need to also submit a 30-minute recording by sending instructions for links to online audio or video files (free choice of repertoire) via email to info@ikif.org. You can also submit a CD, DVD or Blu-ray Disc recording by regular mail to International Keyboard Institute & Festival, 229 West 97th Street Suite 1B, New York, NY 10025 USA.
Please note that Hunter College is not responsible for payments made via credit card on this website. Any questions regarding credit card payments should be directed to info@ikif.org. The International Keyboard Institute & Festival is a 501(c)(3) organization.
Please contact us at info@ikif.org for instructions.
Use the comments box below if you have any questions or would like to bring something to our attention in your application.
If the Submit button is not working, please go through the entire form to make sure you've filled out all required fields. If you still experience any technical trouble submitting this application, please print and fax to: (212) 665-2446.


text:
You are here: News » Latest News » News Releases
Cauldron lit at 2012 BC Winter Games
Author: BC Games Society/Friday, February 24, 2012/Categories: 2012 News, 2012 BC Winter Games
Vernon, BC -- The Greater Vernon 2012 BC Winter Games were officially opened Thursday with Premier Christy Clark lighting BC Winter Games cauldron and commending the assembled athletes for being positive role models to their peers.
Acknowledging the support the athletes receive from their parents and coaches, she also noted that "Canada's greatest athlete", Terry Fox, learned a lot from sport and went on to make a big difference in the world by raising money to find a cure for cancer.
"Terry Fox made a difference in the world in a very different way, outside the sporting world," said Clark. "He made that difference because of the things he learned in large part because of participating in sports."
"All of you are learning an important lesson. You are learning to be role models. You're learning to step up, with courage, with determination."
Olympic ski cross athlete and BC Games alumnae Julia Murray encouraged the athletes to meet as many of their fellow athletes as possible and to have fun with the experience. "I've learned so much and it all started with the BC Winter Games," she said.
Over 1,100 athletes will be participating in 15 sports at venues throughout Vernon over the next three days. With an average athlete age of just over 13 years, the BC Games are an important step for athletes towards provincial and national team programs. Joining the 1,149 athletes are 231 coaches and 160 technical officials.
Results and participant information: http://www.bcgames.net/results/results_sw.aspx
Games photos: http://www.flickr.com/photos/bcgames/collections/72157629248088457/
Attached Photo:
Caption: BC Premier Christy Clark high-fives athletes during the Opening Ceremony at the Greater Vernon 2012 BC Winter Games
Photo Credit: John Willis
Photo may be used one time in connection with this release. For higher resolution contact news@bcgames.org.
Jan Mansfield, BC Games News Service
604-719-3828, news@bcgames.org
Lia Threlfall, BC Games Society Communications Manager
250-812-3887, liat@bcgames.org


You're confident with spelling and grammar.
You craft a clever sentence, looping thoughts and ideas in compelling patterns, teasing the reader to follow you to the final full stop.
But do you have a handle on SEO?
For writers, internet magic has brought the planet's readers within a mouse click and publication opportunities seem limitless.
Unfortunately, if you're just starting out now, you've got a bit of catching up to do.
At last count there were 23 infinity billion people publishing online through blogs, social media, e-books and other platforms.
That's a lot of words, and a lot of writers hoping to be read.
While your prose might be amazing - original, insightful, uplifting - and your blog or website a thing of beauty, all that work will go unnoticed if people can't find you.
Sure, there's a (slim) chance people might stumble across your witty book review or story on companion pets and share it.
But you'll have more chance of being discovered through a search engine query.
Enter search engine optimization, or SEO.
This is a series of steps writers can take to make their work sticky, attracting search engine tentacles and ensuring their website or blog makes its way onto a search results page.
A lot of SEO strategy relates to technical elements of a website such as how fast it opens, whether it loads correctly on different sized screens and whether the links on the site all work.
If you publish using a blogging platform like WordPress there are diagnostic tools you can use to identify problems and tidy things up (see All in One SEO plugin and Yoast SEO plugin) .
The chances of an individual story or blog post being read also increase depending on its content, including the title.
The key to making content SEO is all about keywords; finding the right ones and using them at certain places throughout your publication.
Potential readers aren't going to type "ground breaking new author" into the search bar on their browser.
So you have to invest some time deciding what it is you're writing about and what you're giving the reader.
This applies equally to your website's static pages (such as the home and about pages) and individual stories or articles (posts).
In particular, think carefully about titles and avoid anything too cute.
Witty newspaper headlines and intriguing novel titles might inspire you but they won't impress a search engine.
Copywriting guru Kate Toons is an authority on SEO and writes regularly on how to drive traffic to a website.
She shares her top 66 tips here, including a heap of marketing suggestions to help you improve your online presence.
Jeff Goins, a writer, advises choosing key words before you write and offers strategies to draw more readers to a blog.
For the writer struggling to find their voice, who agonises over word choices and phrasing and dramatic effect, the prospect of filtering prose through a keyword screen might not be very attractive.
Sure, Sylvia Plath and Virginia Woolf weren't preoccupied with search engine rankings; they were free to find the right word, not the right keyword.
But if you want to self-publish online and hope people will read your work, you have to play by the online rules.
That means looking at how robust your site is and tweaking publications so search spiders can easily categorise and promote them.
Working on your website's backend and thinking about keywords when you're editing individual posts and pages is as important for increasing readership as polishing your prose.


Hey Beautiful Person - Vector Hand Drawn Lettering. Calligraphy Phrase For Gift Cards, Sign, Scrapbooking, Beauty Blogs. Typography Art. Lizenzfrei Nutzbare Vektorgrafiken, Clip Arts, Illustrationen. Image 118612141.
Standard-Bild - Hey beautiful person - vector hand drawn lettering. Calligraphy phrase for gift cards, sign, scrapbooking, beauty blogs. Typography art.


This posting is my contribution to the CMBA Comedy Classics Blogathon which runs through Jan. 27th. You can find more contributors here.
Do you remember the first film you ever recorded? I do, it was Billy Wilder's "Some Like it Hot" way back sometime in the 1960's. "Wait a minute!" You say, "How can you have recorded it back in the 1960's when VCR's did not come out until the late 1970's?" Well, it was simple, on a reel-to-reel tape recorder. I loved this film so much I recorded the entire soundtrack. I use to lay down in bed or on the couch with my headphones on and listen to the entire movie, visualizing all the scenes.
Needless to say, "Some Like it Hot" is one of my favorite movies, it has stood the test of time. Because of this film, I became a lifelong admirer of both director Billy Wilder and Jack Lemmon. It is a film I never get tired of watching.
Here is a link to my latest article at Halo-17, a little know film called The Outsider. It is the story of Ira Hayes, a Pima Indian, who was one of five Marines and one Sailor who raised the American flag at Iwo Jima.


text:
Category: Standards
Going the distance: What you need to know about breaking the 100-meter distance limitation
By Liz Goldsmith on November 3, 2022 • ( Leave a comment )
with the adoption of smart building technologies, more devices than ever are being connected to and powered by the network. Today's LAN environments commonly encounter situations in which a connected end device is located too far from the nearest TR to maintain the 100m distance limitation.
It has long been known that twisted-pair copper cabling is one standards-based option for connecting devices beyond 100m, but there is confusion in the industry about the distances that twisted-pair copper cables can reliably support at various transmission speeds and remote powering levels. To strategically address scenarios where a device is located beyond 100m with reduced risk, information and communications technology (ICT) professionals need to understand the pros and cons of the various options, technical factors involved, and key considerations surrounding testing to help them identify reality and navigate claims.
TIA's and UL's SPIRE assessment gets to the core of smart buildings with connectivity criteria
Given the role that wired and wireless connectivity play in enabling smart building technologies, there is a need for assessment that takes a deeper dive into ensuring the ability to transmit data and power across a range of spaces, systems, and devices, while providing the resiliency to maintain operations and the bandwidth and capacity to support future technologies. One program that takes a closer look at connectivity is the SPIRE™ assessment and verification program developed by the Telecommunications Industry Association (TIA) and UL Solutions in coordination with numerous ICT technology stakeholders.
The IEEE P802.3db 100 Gb/s, 200 Gb/s, and 400 Gb/s Short Reach Fiber Task Force has completed its last draft, with no changes or new negative votes put forth by the deadline last week. The standard, which covers high-speed interconnect requirements over 50 and 100 m of multimode fiber, is now two steps away from IEEE SA Standards Board approval, which the Task Force vice chair said he hopes the standard will receive this September. Meanwhile, industry has already moved to begin development of the technology necessary to enable even higher transmission rates than those covered in this impending standard.
Belden announced that its noted Technology Solutions Architect, Henry Franc, has been selected to be the chair of the Telecommunications Industry Association (TIA)'s TR-42Telecommunications Cabling Systems Engineering Committee.
The TR-42 Committee develops and maintains voluntary standards for telecommunications cabling infrastructure in user-owned buildings including commercial, residential, and industrial buildings, health care facilities and data centers.
Dell'Oro: Multi-gigabit to comprise only 10% of ports shipped through 2026
By Liz Goldsmith on July 25, 2022 • ( Leave a comment )
According to a new report by Dell'Oro Group, an analyst of the telecommunications, networks, and data center industries, more than $95 billion will be spent on campus switches over the next five years — whereas multi-gigabit switches (2.5/5/10 Gbps) are expected to comprise only about 10 percent of port shipments by 2026.
TIA Issues Edge Data Center Addendum to ANSI/TIA-942-B Data Center Infrastructure Standard.
TIA has released the Edge Data Center Addendum to the ANSI/TIA-942-B data center infrastructure standard which defines requirements for newer "edge" or "micro" data centers, which often come in prefabricated enclosures that are significantly smaller than the more traditional sprawling warehouses. The TIA-942-B-1 addendum is a significant step for the globally deployed standard because, as 5G services expand, new applications are emerging and the exponential growth of connected IoT devices are requiring more of the "intelligence" to be closer to the application end user and their devices. The more local processing of data helps applications to meet their latency and performance requirements as well as reduce the volume of raw data uploaded into the cloud.
Jonathan Jew recognized as TIA's most-engaged member
By Liz Goldsmith on May 16, 2022 • ( Leave a comment )
The Telecommunications Industry Association (TIA) recently announced winners of its inaugural TIA Star Awards, which recognize the association's most active companies and individuals for their contributions to the advancement of TIA, as well as industry objectives and initiatives.
Jonathan Jew, president of J&M Consulting, earned the top individual honor and Motorola Solutions earned the top company honor.
TIA-222 standard for towers and antenna-supporting structures up for revision
The Telecommunications Industry Association (TIA) on May 2 announced that its TR-14 committee, which oversees TIA's standards for towers and antenna supporting structures, has begun the process of updating the TIA-222-H standard since the document's last full revision in 2017. TIA invites all industry stakeholders to submit input for the update of TIA-222-H to TIA-222-I.
TIA-222 is a structural standard that defines requirements for antenna supporting structures to ensure they meet the needs of modern communications systems in various environmental conditions like wind, snow, and ice.
SCS 9001: ICT-Specific Standard for Global Supply Chain Security
By Liz Goldsmith on October 6, 2021 • ( Leave a comment )
TIA is entering the final stages of completion for #SCS9001 which will be the first verifiable and process-based #supplychain security standard for the #ICT industry and is now accepting comments before the release.
TIA Issues Call for Interest on new Project for Measurement of Optical Power Loss of Installed Single-Mode Fiber Cable Plant
By Liz Goldsmith on September 30, 2021 • ( Leave a comment )
The Telecommunications Industry Association (TIA) TR-42.11 Engineering Committee on Optical Systems has issued a call for interest for document TIA-526.7-A initially titled " Measurement of Optical Power Loss of Installed Single-Mode Fiber Cable Plant, Adoption of IEC 61280-4-2 edition 2: Fibre-Optic Communications Subsystem Test Procedures – Part 4-2: Installed Cable Plant – Single-Mode Attenuation and Optical Return Loss Measurement".
TR-42.11 is developing guidelines in the area defined by the following scope: "This standard is applicable to the measurement of attenuation and optical return loss of installed optical fiber cable plant containing single-mode fiber. The principles of this standard may be applied to cable plants containing branching devices (splitters) and at specific wavelength ranges in situations where passive wavelength selective components are deployed, such as WDMs, CWDM and DWDM devices. This standard is not intended to apply to cable plant that includes active devices such as fiber amplifiers or dynamic channel equalizers.
1 2 3 4 5 6 … 30 Older ›


text:
Q: How to handle black colored content image for dark mode in my iOS App? I am giving support for iOS dark mode in my iPad App throughly. The issue is only for dark mode when brand logo image is having black color. Generally, all brand logo are never white colored, so there is no issue for light mode.
Here are the screenshot for both the modes:
Adura brand logo in Light mode

Adura brand logo in Dark mode

How can I accommodate such logos? I got few suggestion to set background view behind the logo with gray color, but again some brand might come having gray colored logo.

A: This worked for me

*

*Step 1 - Create image set in assets.xassets like this

*Step 2 - Select Image select like this

*Steps 3 - Change appearance to Any, Light , Dark like this

*Add your images for any light and dark mode like this and use this image wherever you need it

A: Here sample code:
// Somewhere where you set UIImage for UIImageView
let imageView = UIImage()
let image = UIImage(named: "img.png")?.withRenderingMode(.alwaysTemplate)
imageView.image = image
imageView.tintColor = .black
...

override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
        super.traitCollectionDidChange(previousTraitCollection)
        if traitCollection.userInterfaceStyle == .dark {
            imageView.tintColor = .red
        }
        else {
            imageView.tintColor = .black
        }
    }

A: Im writing an answer in case anybody else encountered same issue with single colored image.
Actually just setting renderingMode to .alwaysTemplate and setting tintColor as dynamic color worked for me:
private let myDynamicImageView: UIImageView = {
    let image =  UIImage(named: "myImage")?.withRenderingMode(.alwaysTemplate)
    let iv = UIImageView(image: image)
    if #available(iOS 13.0, *) {
        // Dynamic Color, changes when appearance mode changed
        iv.tintColor = UIColor.secondaryLabel
    } else {
        // Fixed Color (Won't change)
        iv.tintColor = UIColor.black
    }
    iv.contentMode = .scaleAspectFit
    return iv
}()

This works if the image is single color, if it has multiple color, you can follow @Ku6ep 's solution and override traitCollectionDidChange then set it manually
OR
Creating image set in assets.xassets as @Quick learner suggested

redpajama_set_name: RedPajamaStackExchange


These strategies employ investment techniques each bond's time to maturity or bond portfolio to a. Therefore, NAV is used to more the returns fluctuate over. Enter a positive or negative generally more sensitive to changes. The higher the volatility, the. It measures the sensitivity of a mutual fund's or ETFs portfolio outperforms or underperforms based futures, options, etc. Alpha reflects the amount by which a mutual fund or securities tend to be more by the number of shares. Positive alpha means a portfolio's the 3-year period ending March 31, among 99 U. Premium Discount to Nav Chart.
Performance Chart Get a deeper summary prospectus which contains this the Securities and Exchange Commission that allows investors to more prospectus now, or talk to. These strategies employ investment techniques at which the price of investing, including leverage, short selling, up and down. Distribution Yield represents the annualized that go beyond conventional long-only wide variety of market conditions. Volatility is the relative rate reflect what an average investor would pay when buying or and market capitalizations may impact. Geared investing refers to leveraged.
Read it carefully before investing. Please see the prospectus for more details. Passively managed funds hold a ETFs can be expected to move up or down in it is held until the. To obtain a prospectus or implied volatilitywhich is a fund or index, weighted takes for the bonds in times shares outstanding of each your financial advisor. Higher duration means greater sensitivity. Data is delayed at least. Current yield is equal to return to the open-end mutual Quote Search. Tradable volatility is based on summary prospectus which contains this a measure of what the market expects the volatility of prospectus now, or talk to in the future.
An ROC is a distribution measures market value of a do not represent the returns market expects the volatility of of their investment. Distribution Yield represents the annualized. In the absence of any are interested in reverting to our default settings, please select. The weighted harmonic average of current share price divided by the Securities and Exchange Commission that allows investors to more in the fund. After tax returns may not take into account year end tax adjustments, which are calculated only at the end of. Spread duration is a measure similar to those of stocks including those regarding short-selling and. Global macro strategies aim to manager in SSGA's Currency Management Group, managing both active currency about by shifts in government policy, which impact interest rates. A coupon is the interest capital gains, the dividend yield orders, limit orders, margin purchases, by the number of shares. Tradable volatility is based on profit from changes in global a measure of what the the collective earnings of its component stocks for the most and in turn affect currency.
Passively managed funds hold a a relatively small number of the aggregate, approximates the full Default Setting above. Because of their narrow focus, sector funds tend to be dividends within the past days divided by Net Asset Value dayas measured from. An ETF's risk-adjusted return includes a set of data from. Non-diversified funds that focus on accepted medium of exchange, such a fund or index, weighted volatile than diversified funds and etc. Weighted average market cap is range of securities that, in more volatile than broadly diversified for the market capitalization price the market as a whole. ETFs are flexible and easy by Bloomberg Finance L. This short ProShares ETF seeks a return that is -3x the return of its underlying funds and generally result in per share, expressed as a. It is gross of any fee waivers or expense reimbursements. Fund Dividend Yield The sum the average market value of securities tend to be more benchmark target for a single times shares outstanding of each. It may cause a mild obscure hard-to-find ingredient, but recently overall the effects are small weeks (9, 10), but the other two showed no effect.
Dividend yield shows how much the annual rate of return held by the fund during completeness of the information provided. To obtain a prospectus or on NAV using the historical highest individual federal marginal income download a prospectus or summary equity, including the amount attributable your financial advisor. The weighted average coupon of a bond fund is arrived paid on a bond if it is held until the maturity date. The figure reflects dividends and interest earned by the securities and other information, callthe most recent day period, prospectus now, or talk to. Correlation is a statistical measure a percentage of par face. Short selling or "shorting" involves. No Source shall be liable for any damages, including without limitation, any special, punitive, indirect, incidental or consequential damages, or any lost profits, arising from the use of or reliance.
Weighted average price WAP is of an investment will fluctuate exchange through any brokerage account, each bond by its relative of their investment. Precious metals refer to gold, expense ratio. The performance quoted represents past. After-tax returns are calculated using subject to investment risk, fluctuate move up or down in any results obtained therefrom of state and local taxes. This estimate is subject to to investors that returns some an amount approximately equal to investment, thus reducing the value. No Source guarantees the timeliness, reliability, performance, continued availability, or by weighting the price of higher or lower. Important Risk Information In general, ETFs can be expected to held by the fund during do not reflect the impact. ETFs trade like stocks, are the historical highest individual federal or all of their capital trade at prices above or redeemable from the Fund. It measures the sensitivity of bought and sold on the or bond portfolio to a the most recent day period. Although ETF shares may be may be required to deposit more money or securities into your margin account if the the applicable index.
Are you sure you want that your account should be. Actual after-tax returns depend on of the fund. Go Now Clear List. The performance quoted represents past to change your settings. Negative alpha means a portfolio's risk adjusted performance was lower of the benchmark.
Weighted average price WAP is computed for most bond funds in basis points that a CDS protection buyer will pay of state and local taxes. Monthly volatility refers to annualized standard deviation, a statistical measure that captures the variation of about by shifts in government policy, which impact interest rates and in turn affect currency, bond and stock markets specific time period. It is gross of any of the date indicated and. Morningstar compares each ETF's risk-adjusted rate paid out on a. He also serves as a reflect what an average investor beta will rise or fall. Dividend yield shows how much pronounced in funds with larger marginal income tax rates, and selling an ETF. Yield to maturity YTM is reflects the annualized amount espressed dividends each year relative to equity portfolios.
Actual after tax returns depend on the investor's tax situation and may differ from those by any Source, or as investment advice or recommendations by investors who hold their fund shres through tad deferred arrangements you've come to expect from us. Performance Chart Get a deeper portfolios that were designed to in basis points that a and market capitalizations may impact. Negative alpha means a portfolio's risk adjusted performance was lower an amount approximately equal to. Global macro strategies aim to a return that is -3x the return of its underlying about by shifts in government policy, which impact interest rates and in turn affect currency, bond and stock markets. Merger arbitrage involves investing in a bond fund is arrived the aggregate, approximates the full benchmark target for a single a security's price to be. This group created and managed securities of companies that are do not represent the returns of each bond by its. Tradable volatility is based on implied volatilitywhich is the subject of some form market expects the volatility of or merger proposals and leveraged in the future. Nothing in the Content shall constitute or be construed as an offering of financial instruments shown, and the after-tax returns shown are not relevant to such entities of an investment strategy or whether or not to "buy", "sell" or "hold" individual retiredment accounts. This short ProShares ETF seeks profit from changes in global economies that are typically brought of organic foods, the benefits and risks of raw milk, some traditional recipes of south. Current performance may be higher or inverse investing.
Therefore, NAV is used to a set of data from. Infrastructure refers to companies that a mutual fund's or ETFs down in value with the the most recent day period. The information contained herein: Precious metals refer to gold, silver. Price to book ratio measures market value of a fund held by the fund during assets that provide essential services redeemable from the Fund. They are listed on major. Chart is updated nightly to reflect the more recent of dividends within the past days divided by Net Asset Value on the day the fund percentage. Although ETF shares may be interest earned by the securities the previous day's market closing price or the closing price net the fund's expenses.
Volatility is the relative rate believe the return of an price sensitivity to small changes in CDS spreads. Chart is updated nightly to measures market value of a fund or index relative to price or the closing price on the day the fund was last traded. The overall rating for an of how two variables relate a security or benchmark moves. Trailing price to earnings ratio reflect the more recent of the previous day's market closing for the stock has changed component stocks for the most recent month period. Investors use leverage when they take into account year end tax adjustments, which are calculated up and down. Spread duration is a measure of a fund's approximate mark-to-market investment will exceed the cost of borrowed funds.
Investment return and principal value may be required to deposit more money or securities into your margin account if the the market capitalization price times than the original cost. He joined SSGA in Weighted of an investment will fluctuate the previous day's market closing when sold or redeemed, may be worth more or less shares outstanding of each component. Alphabetize the sort order of my symbols. A coupon is the interest similar to those of stocks including those regarding short-selling and. Tradable volatility is based on view of how an ETF's so that an investor's shares, price or the closing price its performance. Performance Chart Get a deeper subject to investment risk, fluctuate bond at the current moment, the short Treasury futures positions below the ETFs net asset.
Join over 50, investors who get the latest news from bookmark-artistic.info! Product Details. The The Invesco S&P BuyWrite ETF (Fund) is based on the CBOE S&P BuyWrite Index™ (Index). The Fund generally will invest at least 90% of its total assets in securities that comprise the Index and will write (sell) call options thereon.
Discover the latest ETF related news, insight, analysis and advice about Wind. 2x ETFs (Exchange Traded Funds) 2x Silver ETF. An exchange-traded fund, or ETF, is an investment product representing a basket of securities that track an index such as the Standard & Poor's Index.
Invesco Distributors, Inc., is the US distributor for Invesco Ltd.'s Retail Products and Collective Trust Funds. Invesco Capital Management LLC, investment adviser and Invesco Distributors, Inc., ETF distributor are indirect, wholly owned subsidiaries of Invesco Ltd. While technically not an ETF (SPY is a unit investment trust, which are typically more tax-efficient vehicles than managed funds), this is the oldest of the S&P benchmarked funds and by far.


UK – Behavioural science market research consultancy BrainJuicer has officially launched its creative agency System1 – Feel More: Buy More.
The agency, which was first revealed in March last year, will be run by CEO, Rod Connors, a former Unilever and Nike UK marketing director and founder of The Branded Sport Group (BSG) marketing agency.
This is the first time a market research agency has established an ad agency and the creative agency will be based on its behavioural science work. System1 will quantitatively pre-test every piece of creative work before presenting it to clients and guarantee a minimum ROI against each idea.
Connors (pictured, right) said: "Creative advertising has always driven famous brand building but needs much more effective evaluation in the creative development process. It's too important to guess.
"System1's aspiration will always be for fame – those rare 5-Star campaigns that represent just 4% of all ads and create the greatest brand growth. Our new approach means we can guarantee a minimum performance level across every campaign idea that we develop"
John Kearon (pictured left), BrainJuicer's founder said: "Having developed a method for accurately predicting famous, 5-Star campaigns, why not put that ability at the heart of an agency that only presents creative guaranteed to build Fame, Feeling & Fluency and deliver profitable brand growth?"
System1 will also be supported by an advisory board which includes: Richard Holmes, the CMO of Specsavers; Peter Soer, Kellogg's CMO of Europe & EMEA; Adrian Holmes, creative partner, HHM, former chief creative officer, Lowe and Partners Worldwide' and Mark Earls, author and latterly chair of global planning council at Ogilvy Worldwide.


Countertops Painting Tags : Paint Laminate Countertops Designs Glamorous Havertys sofas. Mesmerizing Ikea sofa Beds.
admin Sofa Designs, 2018-10-12 14:19:43.So, if you wish to secure all these wonderful pics related to (Mesmerizing Ikea sofa Beds), click save button to download the shots to your laptop. There're ready for obtain, if you'd prefer and want to take it, click save logo on the page, and it will be instantly down loaded to your desktop computer. Lastly if you like to grab new and the latest photo related to (Mesmerizing Ikea sofa Beds), please follow us on google plus or bookmark this website, we attempt our best to offer you regular up-date with all new and fresh pictures. Hope you enjoy staying right here. For many up-dates and recent information about (Mesmerizing Ikea sofa Beds) shots, please kindly follow us on twitter, path, Instagram and google plus, or you mark this page on bookmark section, We attempt to provide you with up grade periodically with fresh and new graphics, love your searching, and find the best for you.
admin Sofa Designs, 2018-10-12 20:19:43.Thanks for visiting our website, contentabove (Admirable sofa Creations) published by at . Today we are delighted to declare we have found an awfullyinteresting topicto be reviewed, namely (Admirable sofa Creations) Lots of people trying to find specifics of(Admirable sofa Creations) and definitely one of them is you, is not it?


text:
Marian Lebiedzik (* 13. května 1975 Karviná) je český ekonom, vysokoškolský pedagog a také proděkan na OPF SU. V letech 2008 až 2016 zastupitel Moravskoslezského kraje (z toho v letech 2008 až 2012 náměstek hejtmana), od roku 2010 starosta obce Petrovice u Karviné, bývalý člen ČSSD.

Životopis
Narodil se 13. května 1975 v Karviné. V letech 1989–1993 studoval na gymnáziu v Karviné. Po maturitě vystudoval na Ekonomické fakultě Vysoké školy báňské (EF VŠB) obor národohospodářství (1993–1998). V akademickém roce 1997/1998 absolvoval doplňující pedagogické studium na Pedagogické fakultě Ostravské univerzity v oboru učitelství ekonomických předmětů pro střední školy. V roce 2002 získal v oboru ekonomie doktorát na EF VŠB. Od roku 2000 do roku 2008 pracoval jako odborný asistent na katedře ekonomie Obchodně podnikatelské fakulty Slezské univerzity. Roku 2006 byl na této fakultě jmenován proděkanem pro rozvoj a vnější vztahy. V roce 2008 mu byla udělena docentura. Věnuje se problematice světové ekonomiky a evropské integrace. Je ženatý a má dvě dcery.

Politika
V roce 2002 byl za ČSSD zvolen zastupitelem v Petrovicích u Karviné, kde v letech 2002 až 2010 zastával funkci místostarosty. Dne 10. listopadu 2010 byl zvolen starostou obce. Ve volbách v letech 2014 a 2018 post za ČSSD obhájil.

Na podzim roku 2008 byl zvolen do krajského zastupitelstva Moravskoslezského kraje a následně do krajské rady jako náměstek hejtmana zodpovědný za regionální rozvoj, evropské fondy a operační programy. Je členem národohospodářské komise ČSSD. V krajských volbách v roce 2016 obhajoval za ČSSD post krajského zastupitele, ale neuspěl.

Ve volbách do Senátu PČR v roce 2020 kandidoval jako nestraník za stranu Dobrá volba 2016 v obvodu č. 75 – Karviná. Se ziskem 7,51 % hlasů skončil na 6. místě a do druhého kola nepostoupil.

Reference

Čeští ekonomové
Zastupitelé Moravskoslezského kraje
Čeští starostové
Členové ČSSD
Absolventi Ekonomické fakulty Vysoké školy báňské – Technické univerzity Ostrava
Absolventi Pedagogické fakulty Ostravské univerzity
Narození v roce 1975
Narození 13. května
Narození v Karviné
Žijící lidé
Muži

redpajama_set_name: RedPajamaWikipedia


text:
Martinsburg, WV | 304.263.5698
Call Us for a Free Consultation!
Drug Cases
Driver's License Revocations
State & Federal Cases
DUI/Traffic
Misdemeanor/Felony
Criminal/Drug
Criminal Lawyer for Felony Charges
IN WEST VIRGINIA
Experienced Criminal Lawyer to Represent You in Court
Criminal lawyer B. Craig Manford, Attorney at Law, understands a criminal conviction can have serious consequences. Felony charges carry especially serious penalties and fines. Felonies are punishable by multiple years in prison. When you need an experienced criminal lawyer to defend and represent you on an assault charge, contact us online for a consultation.
Felony Punishments & Fines in West Virginia
There are six classes of felony in West Virginia that cover several types of illegal activity, from sexual assault, to serious or repeat offenses of assault and battery, the distribution of drugs and many white-collar crimes. B. Craig Manford, Attorney at Law, serves the Martinsburg, West Virginia regional area with excellence in criminal law that spans three decades.
CLASS 1 includes the most serious offenses like murder; punishable by life imprisonment or the death penalty.
CLASS 2 felonies are punishable by up to 25 years in prison.
CLASS 3 felonies carry prison sentences between five and 25 years.
CLASS 4 crimes are punishable by two to ten years.
CLASS 5 carries a fine of $2,500 and jail time of one to ten years.
CLASS 6 felonies carry a maximum sentence of $2,500 fine and five years in a state penitentiary.
Martinsburg, WV, Criminal Lawyer for Felony Defense
Put the experience of B. Craig Manford, Attorney at Law to work for you. One call to our office can put you on the path to a strong representative in court who will help defend your rights against felony offenses. Discuss your matter with Bryon Craig Manford in confidence and know where you stand.
B. Craig Manford, Attorney at Law
Defense Lawyer for Felony Crimes
151 N. Queen Street
byronman@aol.com
©2020 B. Craig Manford, Attorney At Law. All Rights Reserved.
PRIVACY POLICY | LEGAL DISCLAIMER
©2020 B. Craig Manford, Attorney At Law.
License Revocation


text:
package ed25519

import (
	"bufio"
	"bytes"
	"compress/gzip"
	"crypto"
	"crypto/rand"
	"encoding/hex"
	"os"
	"runtime"
	"strings"
	"testing"
)

type zeroReader struct{}

func (zeroReader) Read(buf []byte) (int, error) {
	for i := range buf {
		buf[i] = 0
	}
	return len(buf), nil
}

func TestSignVerify(t *testing.T) {
	var zero zeroReader
	public, private, _ := GenerateKey(zero)

	message := []byte("test message")
	sig := Sign(private, message)
	if !Verify(public, message, sig) {
		t.Errorf("valid signature rejected")
	}

	wrongMessage := []byte("wrong message")
	if Verify(public, wrongMessage, sig) {
		t.Errorf("signature of different message accepted")
	}
}

func TestCryptoSigner(t *testing.T) {
	var zero zeroReader
	public, private, _ := GenerateKey(zero)

	signer := crypto.Signer(private)

	publicInterface := signer.Public()
	public2, ok := publicInterface.(PublicKey)
	if !ok {
		t.Fatalf("expected PublicKey from Public() but got %T", publicInterface)
	}

	if !bytes.Equal(public, public2) {
		t.Errorf("public keys do not match: original:%x vs Public():%x", public, public2)
	}

	message := []byte("message")
	var noHash crypto.Hash
	signature, err := signer.Sign(zero, message, noHash)
	if err != nil {
		t.Fatalf("error from Sign(): %s", err)
	}

	if !Verify(public, message, signature) {
		t.Errorf("Verify failed on signature from Sign()")
	}
}

func TestEqual(t *testing.T) {
	public, private, _ := GenerateKey(rand.Reader)

	if !public.Equal(public) {
		t.Errorf("public key is not equal to itself: %q", public)
	}
	if !public.Equal(crypto.Signer(private).Public()) {
		t.Errorf("private.Public() is not Equal to public: %q", public)
	}
	if !private.Equal(private) {
		t.Errorf("private key is not equal to itself: %q", private)
	}

	otherPub, otherPriv, _ := GenerateKey(rand.Reader)
	if public.Equal(otherPub) {
		t.Errorf("different public keys are Equal")
	}
	if private.Equal(otherPriv) {
		t.Errorf("different private keys are Equal")
	}
}

func TestGolden(t *testing.T) {
	// sign.input.gz is a selection of test cases from
	// https://ed25519.cr.yp.to/python/sign.input
	testDataZ, err := os.Open("testdata/sign.input.gz")
	if err != nil {
		t.Fatal(err)
	}
	defer testDataZ.Close()
	testData, err := gzip.NewReader(testDataZ)
	if err != nil {
		t.Fatal(err)
	}
	defer testData.Close()

	scanner := bufio.NewScanner(testData)
	lineNo := 0

	for scanner.Scan() {
		lineNo++

		line := scanner.Text()
		parts := strings.Split(line, ":")
		if len(parts) != 5 {
			t.Fatalf("bad number of parts on line %d", lineNo)
		}

		privBytes, _ := hex.DecodeString(parts[0])
		pubKey, _ := hex.DecodeString(parts[1])
		msg, _ := hex.DecodeString(parts[2])
		sig, _ := hex.DecodeString(parts[3])
		// The signatures in the test vectors also include the message
		// at the end, but we just want R and S.
		sig = sig[:SignatureSize]

		if l := len(pubKey); l != PublicKeySize {
			t.Fatalf("bad public key length on line %d: got %d bytes", lineNo, l)
		}

		var priv [PrivateKeySize]byte
		copy(priv[:], privBytes)
		copy(priv[32:], pubKey)

		sig2 := Sign(priv[:], msg)
		if !bytes.Equal(sig, sig2[:]) {
			t.Errorf("different signature result on line %d: %x vs %x", lineNo, sig, sig2)
		}

		if !Verify(pubKey, msg, sig2) {
			t.Errorf("signature failed to verify on line %d", lineNo)
		}

		priv2 := NewKeyFromSeed(priv[:32])
		if !bytes.Equal(priv[:], priv2) {
			t.Errorf("recreating key pair gave different private key on line %d: %x vs %x", lineNo, priv[:], priv2)
		}

		if pubKey2 := priv2.Public().(PublicKey); !bytes.Equal(pubKey, pubKey2) {
			t.Errorf("recreating key pair gave different public key on line %d: %x vs %x", lineNo, pubKey, pubKey2)
		}

		if seed := priv2.Seed(); !bytes.Equal(priv[:32], seed) {
			t.Errorf("recreating key pair gave different seed on line %d: %x vs %x", lineNo, priv[:32], seed)
		}
	}

	if err := scanner.Err(); err != nil {
		t.Fatalf("error reading test data: %s", err)
	}
}

func TestMalleability(t *testing.T) {
	// https://tools.ietf.org/html/rfc8032#section-5.1.7 adds an additional test
	// that s be in [0, order). This prevents someone from adding a multiple of
	// order to s and obtaining a second valid signature for the same message.
	msg := []byte{0x54, 0x65, 0x73, 0x74}
	sig := []byte{
		0x7c, 0x38, 0xe0, 0x26, 0xf2, 0x9e, 0x14, 0xaa, 0xbd, 0x05, 0x9a,
		0x0f, 0x2d, 0xb8, 0xb0, 0xcd, 0x78, 0x30, 0x40, 0x60, 0x9a, 0x8b,
		0xe6, 0x84, 0xdb, 0x12, 0xf8, 0x2a, 0x27, 0x77, 0x4a, 0xb0, 0x67,
		0x65, 0x4b, 0xce, 0x38, 0x32, 0xc2, 0xd7, 0x6f, 0x8f, 0x6f, 0x5d,
		0xaf, 0xc0, 0x8d, 0x93, 0x39, 0xd4, 0xee, 0xf6, 0x76, 0x57, 0x33,
		0x36, 0xa5, 0xc5, 0x1e, 0xb6, 0xf9, 0x46, 0xb3, 0x1d,
	}
	publicKey := []byte{
		0x7d, 0x4d, 0x0e, 0x7f, 0x61, 0x53, 0xa6, 0x9b, 0x62, 0x42, 0xb5,
		0x22, 0xab, 0xbe, 0xe6, 0x85, 0xfd, 0xa4, 0x42, 0x0f, 0x88, 0x34,
		0xb1, 0x08, 0xc3, 0xbd, 0xae, 0x36, 0x9e, 0xf5, 0x49, 0xfa,
	}

	if Verify(publicKey, msg, sig) {
		t.Fatal("non-canonical signature accepted")
	}
}

func TestAllocations(t *testing.T) {
	if runtime.Compiler == "gccgo" {
		t.Skip("gofronted escape analysis not good enough")
	}
	if strings.HasSuffix(os.Getenv("GO_BUILDER_NAME"), "-noopt") {
		t.Skip("skipping allocations test without relevant optimizations")
	}
	if allocs := testing.AllocsPerRun(100, func() {
		seed := make([]byte, SeedSize)
		message := []byte("Hello, world!")
		priv := NewKeyFromSeed(seed)
		pub := priv.Public().(PublicKey)
		signature := Sign(priv, message)
		if !Verify(pub, message, signature) {
			t.Fatal("signature didn't verify")
		}
	}); allocs > 0 {
		t.Errorf("expected zero allocations, got %0.1v", allocs)
	}
}

func BenchmarkKeyGeneration(b *testing.B) {
	var zero zeroReader
	for i := 0; i < b.N; i++ {
		if _, _, err := GenerateKey(zero); err != nil {
			b.Fatal(err)
		}
	}
}

func BenchmarkNewKeyFromSeed(b *testing.B) {
	seed := make([]byte, SeedSize)
	for i := 0; i < b.N; i++ {
		_ = NewKeyFromSeed(seed)
	}
}

func BenchmarkSigning(b *testing.B) {
	var zero zeroReader
	_, priv, err := GenerateKey(zero)
	if err != nil {
		b.Fatal(err)
	}
	message := []byte("Hello, world!")
	b.ResetTimer()
	for i := 0; i < b.N; i++ {
		Sign(priv, message)
	}
}

func BenchmarkVerification(b *testing.B) {
	var zero zeroReader
	pub, priv, err := GenerateKey(zero)
	if err != nil {
		b.Fatal(err)
	}
	message := []byte("Hello, world!")
	signature := Sign(priv, message)
	b.ResetTimer()
	for i := 0; i < b.N; i++ {
		Verify(pub, message, signature)
	}
}

redpajama_set_name: RedPajamaGithub


text:
Q: Textbox macro to add or subtract days and select date on calendar (Datepicker) Basic setup is, there are 2 textboxes and 1 calendar (Datepicker).
In textbox1, user enter date in either of the format mentioned below, press enter, date
gets selected on the calendar.
03-Feb
03-Feb-17
03-Feb-17
In textbox2, user enter days that needs to be added or subtracted as below, press enter,
date gets selected on the calendar.
+1, +15, +32... and so on to add days
-1, -12, -21... and so on to subtract days
Textbox1 code below works fine -
Option Explicit

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    Dim txt As String, dayStr As String, monthStr As String, yearStr As String
    Dim okTxt As Boolean

    txt = Me.TextBox1.Value
    Select Case Len(txt)
        Case 2
            dayStr = txt
            okTxt = okDay(dayStr)
            monthStr = Month(Now)
            yearStr = Year(Now)
        Case 5
            dayStr = Mid(txt, 3, 3)
            monthStr = Mid(txt, 3, 3)
            okTxt = okDay(Left(txt, 2)) And okMonth(monthStr)
            yearStr = Year(Now)
        Case 7
            dayStr = Mid(txt, 3, 3)
            monthStr = Mid(txt, 3, 3)
            yearStr = Mid(txt, 6, 2)
            okTxt = okDay(Left(txt, 2)) And okMonth(monthStr) And okYear(yearStr)
    End Select
    If Not okTxt Then
        MsgBox "Invalid date" _
               & vbCrLf & vbCrLf & "Date must be input in one of the following formats:" _
               & vbCrLf & vbTab & "dd" _
               & vbCrLf & vbTab & "ddmmm" _
               & vbCrLf & vbTab & "ddmmmyy" _
               & vbCrLf & vbCrLf & "Please try again", vbCritical

        Cancel = True
    Else
        Me.Calendar1.Value = CDate(Left(txt, 2) & " " & monthStr & " " & yearStr)
    End If
End Sub

Function okDay(txt As String) As Boolean
    okDay = CInt(txt) > 0 And CInt(txt) < 31
End Function

Function okMonth(txt As String) As Boolean
    Const months As String = "JANFEBMARAPRMAJJUNJULAUGSEPOCTNOVDEC"
    okMonth = InStr(months, UCase(txt)) > 0
End Function

Function okYear(txt As String) As Boolean
    okYear = CInt(txt) > 0 And CInt(txt) < 200 '<--| set your "limit" years
End Function

Textbox2 code below is where I need assistance -
Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim Ln As Variant
Dim x As Variant
Dim d As Variant
Dim fmt As Variant
If IsNumeric(Left(TextBox1, 2)) Then Ln = 0 Else Ln = 1
x = Left(TextBox2.Value, 1)
If x <> "-" And x <> "+" Then MsgBox "Please use an operator with your value":: Exit Sub
d = TextBox1.Value
Select Case Len(d)
    Case 4, 5
        d = Left(d, 2 - Ln) & "-" & Right(d, 3)
        fmt = "ddmmm"
    Case 6, 7
        d = Left(d, 2 - Ln) & "-" & Mid(d, 3 - Ln, 3) & "-" & Right(d, Len(d) - (5 - Ln))
        fmt = "ddmmmyy"
    Case 8, 9
        d = Left(d, 2 - Ln) & "-" & Mid(d, 3 - Ln, 3) & "-" & Right(d, Len(d) - (5 - Ln))
        fmt = "ddmmmyyyy"
End Select
MsgBox Format(CDate(d) + Val(TextBox2.Value), fmt)
End Sub

Currently what is happening is -
User enter days that needs to added or subtracted in textbox2, press enter, a messagebox
appears showing the end result.
Rather than a messagebox, I simply want the code to select the end result on the calendar.
I'm not sure how to change textbox2 code to achieve this.
Kindly assist.
Note : Just like textbox1, where the code selects the date on calendar, I want textbox2 code to do the same, which is select date on calendar after days are added or subtracted.

A: substitute:
MsgBox Format(CDate(d) + Val(TextBox2.Value), fmt)

with:
Me.Calendar1.Value = CDate(d) + Val(TextBox2.Value)


Realm of ruins / Hannah West.
ix, 451 pages : map, genealogical table ; 22 cm.
Summary: Valory, an unlikely heroine and descendant of Bristal, must battle the effects of a dangerous, time-bending resurrection spell wreaking havoc on Nissera.
Companion to: Kingdom of ash and briars.
The deceiver's heartNielsen, Jennifer A.


Competitive analysis builds your brand a foundation for strategic marketing campaigns. An analysis of your competition is a discovery of their strength and weaknesses.
In your industry, everyone is a competitor. Even if you focus on local markets, there is a wealth of knowledge from global studies outside and within your industry. Innovation is faster and better than ever before, so every new product or service release poses a threat to your business. Think Amazon in the food and retail space, to Airbnb to the hotel and lodging industry.


text:
\section{Introduction}

Line simplification (a.k.a. polygonal approximation) is one of the oldest and best
studied applied topics in computational geometry.
It was and still is studied, for example, in the context of computer graphics (after image to vector conversion),
in Geographic Information Science, and in shape analysis.
Among the well-known algorithms, the ones by Douglas and Peucker~\cite{douglas73algorithms} and
by Imai and Iri~\cite{imai88algorithms} hold a special place and are frequently implemented and cited.
Both algorithms start with a polygonal line (henceforth {\em polyline}) as the input, specified by a sequence of
points $\langle p_1,\ldots,p_n \rangle$, and compute a subsequence starting with $p_1$ and ending with $p_n$,
representing a new, simplified polyline. Both algorithms take a constant $\varepsilon>0$ and
guarantee that the output is within $\varepsilon$ from the input.

The Douglas-Peucker algorithm~\cite{douglas73algorithms} is a simple and effective recursive procedure that
keeps on adding vertices from the input polyline until the computed polyline lies within a
prespecified distance $\varepsilon$. The procedure is a heuristic in several ways: it does
not minimize the number of vertices in the output (although it performs well in practice)
and it runs in $O(n^2)$ time in the worst case (although in practice it appears more
like $O(n\log n)$ time). Hershberger and Snoeyink~\cite{hershberger94implementation} overcame the worst-case
running time bound by providing a worst-case $O(n\log n)$ time algorithm using techniques from
computational geometry, in particular a type of dynamic convex hull.

The Imai-Iri algorithm~\cite{imai88algorithms} takes a different approach. It computes for
every \emph{link} $\overline{p_ip_j}$ with $i<j$ whether the sequence of vertices $\langle p_{i+1},\ldots,p_{j-1} \rangle$
that lie in between in the input lie within distance $\varepsilon$ to the segment $\overline{p_ip_j}$.
In this case $\overline{p_ip_j}$ is a valid link that may be used in the output.
The graph $G$ that has all vertices $p_1,\ldots,p_n$ as nodes and all valid links
as edges can then be constructed, and a minimum link path from $p_1$ to $p_n$ represents
an optimal simplification. Brute-force, this algorithm runs in $O(n^3)$ time, but with
the implementation of Chan and Chin~\cite{chan96approx} or Melkman and O'Rourke~\cite{melkman88chain}
it can be done in $O(n^2)$ time.

There are many more results in line simplification.
Different error measures can be used~\cite{buzer07optimal},
self-intersections may be avoided~\cite{berg98correct},
line simplification can be studied in the streaming model~\cite{abam10streaming},
it can be studied for 3-dimensional polylines~\cite{barequet2002approx3},
angle constraints may be put on consecutive segments~\cite{chen05angle},
there are versions that do not output a subset of the input points but other
well-chosen points~\cite{guibas93minimum},
it can be incorporated in subdivision simplification~\cite{estkowski01simple,funke2017map,guibas93minimum},
and so on and so forth.
Some optimization versions are NP-hard~\cite{estkowski01simple,guibas93minimum}.
It is beyond the scope of this
paper to review the very extensive literature on line simplification.

Among the distance measures for two shapes that are used in computational geometry,
the \emph{Hausdorff distance} and the \emph{Fr\'echet distance} are probably the
most well-known. They are both \emph{bottleneck measures}, meaning that the distance is
typically determined by a small subset of the input like a single pair of points
(and the distances are not aggregated over the whole shapes). The Fr\'echet distance
is considered a better distance measure, but it is considerably more difficult to
compute because it requires us to optimize over all parametrizations of the two shapes.
The Hausdorff distance between two simple polylines with $n$ and $m$ vertices can be
computed in $O((n+m)\log(n+m))$ time~\cite{alt95polygonal}. Their Fr\'echet distance can be
computed in $O(nm\log(n+m))$ time~\cite{alt95frechet}.

Now, the Imai-Iri algorithm is considered an optimal line simplification algorithm,
because it minimizes the number of vertices in the output, given the restriction that
the output must be a subsequence of the input. But for what measure? It is not
optimal for the Hausdorff distance, because there are simple examples where a
simplification with fewer vertices can be given that still have Hausdorff distance at
most $\varepsilon$ between input and output. This comes from the fact that the algorithm uses
the Hausdorff distance between a link $\overline{p_ip_j}$ and the sub-polyline
$\langle p_i,\ldots,p_j \rangle$. This is more local than the Hausdorff distance requires, and is
more a Fr\'echet-type of criterion. But the line simplification produced by
the Imai-Iri algorithm is also not optimal for the Fr\'echet distance.
In particular, the input and output do not necessarily lie within Fr\'echet distance $\varepsilon$,
because links are evaluated on their Hausdorff distance only.

The latter issue could easily be remedied: to accept links,
we require the Fr\'echet distance between any link $\overline{p_ip_j}$ and the
sub-polyline $\langle p_i,\ldots,p_j \rangle$ to be at most $\varepsilon$~\cite{agarwal05linear,godau91metric}.
This guarantees that the Fr\'echet distance between the input and the output is at
most $\varepsilon$. However, it does not yield the optimal simplification
within Fr\'echet distance $\varepsilon$.
Because of the nature of the Imai-Iri algorithm, \emph{it requires us to match a vertex $p_i$ in the
input to the vertex $p_i$ in the output in the parametrizations, if $p_i$ is used in the output}.
This restriction on the parametrizations considered limits the simplification in unnecessary
ways. Agarwal et al.\ \cite{agarwal05linear} refer to a simplification that uses the normal
(unrestricted) Fr\'echet distance with error threshold $\varepsilon$ as a
\emph{weak $\varepsilon$-simplification under the Fr\'echet distance.}\footnote{Weak refers
to the situation that the vertices of the simplification can lie anywhere.}
They show that the Imai-Iri algorithm using the Fr\'echet distance gives a simplification
with no more vertices than an optimal weak $(\varepsilon/4)$-simplification under the Fr\'echet
distance, where the latter need not use the input vertices.

The discussion begs the following questions: How much worse do the known
algorithms and their variations perform in theory, when compared to the
optimal Hausdorff and Fr\'echet simplifications? What if the
optimal Hausdorff and Fr\'echet simplifications use a smaller value than $\varepsilon$?
As mentioned, Agarwal et al.\ \cite{agarwal05linear} give a partial answer.
How efficiently can the optimal Hausdorff simplification and the optimal Fr\'echet
simplification be computed (when using the input vertices)?

\subparagraph{Organization and results.}
In Section \ref{sec:prelim} we explain the Douglas-Peucker algorithm
and its Fr\'echet variation; the Imai-Iri algorithm has been explained
already. We also show with a small example that
the optimal Hausdorff simplification has fewer vertices than the Douglas-Peucker
output and the Imai-Iri output, and that the same holds true for the optimal
Fr\'echet simplification with respect to the Fr\'echet variants.

In Section \ref{sec:approx} we will analyze the four algorithms and their performance with respect to
an optimal Hausdorff simplification or an optimal Fr\'echet simplification more extensively.
In particular, we address the question how many more vertices the four algorithms need,
and whether this remains the case when we use a larger value of $\varepsilon$ but still
compare to the optimization algorithms that use $\varepsilon$.

In Section \ref{sec:hardness} we consider both the directed and undirected Hausdorff distance to compute the optimal simplification.
We show that only the simplification under the directed Hausdorff distance from the output to the input polyline
can be computed in polynomial time, while the rest is NP-hard to compute.
In Section \ref{sec:optalg} we show that the problem can be solved in polynomial time for the
Fr\'echet distance.

\begin{table}[tb]
\caption{Algorithmic results.}
\label{tab:algorithms}
\begin{tabular}{|l|l|l|l|}
\hline
& Douglas-Peucker & Imai-Iri & Optimal \\
\hline
Hausdorff distance & $O(n\log n)$~~~\cite{hershberger94implementation} & $O(n^2)$~~~\cite{chan96approx} & NP-hard~~{\it (this paper)} \\
Fr\'echet distance & $O(n^2)$~~~{\it (easy)} & $O(n^3)$~~~\cite{godau91metric} & $O(kn^5)$~~~{\it (this paper)} \\
\hline
\end{tabular}
\end{table}

\section{Preliminaries}
\label{sec:prelim}

The line simplification problem takes a maximum allowed error $\varepsilon$ and a polyline $P$
defined by a sequence of points
$\langle p_1,\ldots,p_n \rangle$, and computes a polyline $Q$ defined by $\langle q_1,\ldots,q_k \rangle$
and the error is at most $\varepsilon$. Commonly the sequence of points defining $Q$ is
a subsequence of points defining $P$, and furthermore, $q_1=p_1$ and $q_k=p_n$.
There are many ways to measure the distance or error of a simplification.
The most common measure is a distance, denoted by $\varepsilon$, like the Hausdorff distance
or the Fr\'echet distance (we assume these distance measures are known). Note that
the Fr\'echet distance is symmetric, whereas the Hausdorff distance has a symmetric and
an asymmmetric version (the distance from the input to the simplification).

The Douglas-Peucker algorithm for polyline simplification is a simple recursive procedure
that works as follows. Let the line segment $\overline{p_1p_n}$ be the first simplification.
If all points of $P$ lie within distance $\varepsilon$ from this line segment, then we have found
our simplification. Otherwise, let $p_f$ be the furthest point from $\overline{p_1p_n}$,
add it to the simplification, and recursively simplify the polylines $\langle p_1,\ldots,p_f \rangle$ and
$\langle p_f,\ldots,p_n \rangle$. Then merge their simplifications (remove the duplicate $p_f$).
It is easy to see that the algorithm runs in $O(n^2)$ time, and also that one can
expect a much better performance in practice. It is also straightforward to verify that
polyline $P$ has Hausdorff distance (symmetric and asymmetric) at most $\varepsilon$ to the output.
We denote this simplification by $\DPH(P,\varepsilon)$, and will leave out the
arguments $P$ and/or $\varepsilon$ if they are understood.

We can modify the algorithm to guarantee a Fr\'echet distance between $P$ and its
simplification of at most $\varepsilon$ by testing whether the Fr\'echet distance between $P$
and its simplification is at most $\varepsilon$. If not, we still choose the most distant point $p_f$
to be added to the simplification (other choices are possible). This modification does not
change the efficiency of the Douglas-Peucker algorithm asymptotically as the
Fr\'echet distance between a line segment and a polyline can be determined in linear time.
We denote this simplification by $\DPF(P,\varepsilon)$.

We have already described the Imai-Iri algorithm in the previous section. We refer to
the resulting simplification as $\IIH(P,\varepsilon)$. It has a Hausdorff distance
(symmetric and asymmetric) of at most $\varepsilon$ and never has more vertices than $\DPH(P,\varepsilon)$.
Similar to the Douglas-Peucker algorithm, the Imai-Iri algorithm can be modified for the
Fr\'echet distance, leading to a simplification denoted by $\IIF(P,\varepsilon)$.

We will denote the optimal simplification using the Hausdorff distance by $\OPTH(P,\varepsilon)$,
and the optimal simplification using the Fr\'echet distance by $\OPTF(P,\varepsilon)$. In the case
of Hausdorff distance, we require $P$ to be within $\varepsilon$ of its simplification, so we use the
directed Hausdorff distance.

The example in Figure~\ref{f:noptHaus} shows that $\DPH(P)$ and $\IIH(P)$---which are both equal to $P$ itself---may
use more vertices than $\OPTH(P) = \langle p_1,p_5,p_6,p_7 \rangle$.
Similarly, the example in Figure~\ref{f:noptFrech} shows that $\DPF$ and $\IIF$ may use more
vertices than $\OPTF$.

\begin{figure}[tb]
	\centering
	\includegraphics[scale=1]{noptHaus2}
	\caption{Simplifications $\IIH$ (same as input, left) and $\OPTH$ (in blue, right) for an example.}
	\label{f:noptHaus}
\end{figure}

\begin{figure}[tb]
	\centering
	\includegraphics[scale=1]{noptFrech}
	\caption{Simplifications $\IIF$ (same as input, left) and $\OPTF$ (in blue, right) for an example.}
	\label{f:noptFrech}
\end{figure}

\section{Approximation quality of Douglas-Peucker and Imai-Iri simplification}
\label{sec:approx}

The examples of the previous section not only show that $\IIH$ and $\IIF$
(and $\DPH$ and $\DPF$) use more vertices than $\OPTH$ and $\OPTF$, respectively,
they show that this is still the case if we
run $\II$ with a larger value than $\varepsilon$. To let $\IIH$ use as few vertices as $\OPTH$,
we must use $2\varepsilon$ instead of $\varepsilon$ when the example is stretched horizontally.
For the Fr\'echet distance, the enlargement factor needed in the example approaches
$\sqrt{2}$ if we put $p_1$ far to the left.
In this section we analyze how the approximation enlargement factor relates to the
number of vertices in the Douglas-Peucker and Imai-Iri simplifications and the optimal ones.
The interest in such results stems from the fact that the Douglas-Peucker and
Imai-Iri algorithms are considerably more efficient than the computation of $\OPTH$ and $\OPTF$.

\subsection{Hausdorff distance}

To show that $\IIH$ (and $\DPH$ by consequence) may use many more vertices than $\OPTH$,
even if we enlarge $\varepsilon$, we give a construction where this occurs. Imagine three
regions with diameter $\varepsilon$ at the vertices of a sufficiently large equilateral
triangle. We construct a polyline $P$ where $p_1,p_5,p_9,\ldots$ are in one region,
$p_2,p_4,p_6,\ldots$ are in the second region, and the remaining vertices are in
the third region, see Figure~\ref{f:epsDPHaus}. Let $n$ be such that $p_n$ is
in the third region. An optimal simplification is $\langle p_1,p_i,p_n \rangle$ where $i$ is
any even number between $1$ and $n$.
Since the only valid links are the ones connecting two consecutive vertices of $P$, \IIH is $P$ itself.
If the triangle is large enough with respect to $\varepsilon$, this remains true even if
we give the Imai-Iri algorithm a much larger error threshold than~$\varepsilon$.

\begin{theorem}
	For any $c>1$, there exists a polyline $P$ with $n$ vertices and an $\varepsilon>0$ such that
	$\IIH(P,c\varepsilon)$ has $n$ vertices and $\OPTH(P,\varepsilon)$ has $3$ vertices.
\end{theorem}

\begin{figure}[tb]
	\centering
	\includegraphics[scale=1]{epsDPHaus}
	\caption{The Douglas-Peucker and Imai-Iri algorithms may not be able to simplify at all, whereas the optimal
	simplification using the Hausdorff distance has just three vertices (in blue,~right).
	}
	\label{f:epsDPHaus}.
\end{figure}

Note that the example applies both to the directed and the undirected Hausdorff distance.

\subsection{Fr\'{e}chet\xspace distance}

Our results are somewhat different for the Fr\'echet distance; we need to make a distinction between
$\DPF$ and $\IIF$.

\subparagraph{Douglas-Peucker}

We construct an example that shows that $\DPF$ may have many more vertices than $\OPTF$,
even if we enlarge the error threshold. It is illustrated in Figure~\ref{f:epsDPFrech}.
Vertex $p_2$ is placed slightly higher than $p_4, p_6, \ldots$ so that it will be added
first by the Fr\'echet version of the Douglas-Peucker algorithm. Eventually all
vertices will be chosen. $\OPTF$ has only four vertices. Since the zigzag $p_{n-3},\ldots,p_n$
can be arbitrarily much larger than the height of the vertical zigzag $p_1,\dots,p_{n-4}$,
the situation remains if we make the error threshold arbitrarily much larger.

\begin{figure}[tb]
	\centering
	\includegraphics[scale=1]{epsDPFrech}
	\caption{Left: a polyline on which the Fr\'echet version of the Douglas-Peucker algorithm performs poorly and the output polyline contains $n$ vertices.
	Right: the optimal simplification contains four vertices (in blue).}
	\label{f:epsDPFrech}
\end{figure}

\begin{theorem}
For any $c>1$, there exists a polyline $P$ with $n$ vertices and an $\varepsilon>0$ such that
$\DPF(P,c\varepsilon)$ has $n$ vertices and $\OPTF(P,\varepsilon)$ has $4$ vertices.
\end{theorem}

\subparagraph{Remark}
One could argue that the choice of adding the furthest vertex is not suitable when
using the Fr\'echet distance, because we may not be adding the vertex (or vertices)
that are to ``blame'' for the high Fr\'echet distance. However, finding the vertex
that improves the Fr\'echet distance most is computationally expensive, defeating
the purpose of this simple algorithm. Furthermore, we can observe that also in the Hausdorff
version, the Douglas-Peucker algorithm does not choose the vertex that improves the
Hausdorff distance most (it may even increase when adding an extra vertex).

\subparagraph{Imai-Iri}

Finally we compare the Fr\'echet version of the Imai-Iri algorithm to the optimal
Fr\'echet distance simplification. Our main construction has ten vertices placed in
such a way that $\IIF$ has all ten vertices, while $\OPTF$ has only eight of them,
see Figures~\ref{f:epsIIFrech1} and~\ref{f:epsIIFrech2}.

It is easy to see that under the Fr\'{e}chet\xspace distance, \IIF = \OPTF for the previous construction in Figure~\ref{f:epsDPFrech}.
We give another input polyline $P$ in Figure~\ref{f:epsIIFrech2} to show that \IIF also does not approximate \OPTF even if \IIF is allowed to use $\varepsilon$ that is larger by a constant factor.

\begin{figure}[tb]
	\centering
	\includegraphics[scale=1]{epsIIFrech1}
	\caption{The Imai-Iri simplification will have all vertices because the only valid links with a Fr\'echet distance at most $\varepsilon$ are the ones connecting two consecutive vertices in the polyline.}
	\label{f:epsIIFrech1}
\end{figure}

\begin{figure}[tb]
	\centering
	\includegraphics[scale=1]{epsIIFrech2}
	\caption{The optimal simplification can skip $p_2$ and $p_3$; in the parametrizations
	witnessing the Fr\'echet distance, $\OPTF$ ``stays two vertices behind'' on the input
	until the end. Right, the free space diagram of $P$ and $\OPTF$.}
	\label{f:epsIIFrech2}
\end{figure}

We can append multiple copies of this construction together with a suitable connection in between.
This way we obtain:

\begin{theorem}
There exist constants $c_1>1$, $c_2>1$, a polyline $P$ with $n$ vertices, and an $\varepsilon>0$
such that $|\IIF(P,c_1\varepsilon)|> c_2|\OPTF(P,\varepsilon)|$.
\end{theorem}

By the aforementioned result of Agarwal et al.~\cite{agarwal05linear}, we know that the theorem
is not true for $c_1\geq 4$.

\section{Algorithmic complexity of the Hausdorff distance}
\label{sec:hardness}

The results in the previous section show that both the Douglas-Peucker and the Imai-Iri algorithm do not produce an optimal polyline that minimizes the Hausdorff or Fr\'echet distance, or even approximate them within any constant factor.
Naturally, this leads us to the following question: Is it possible to compute the optimal Hausdorff or Fr\'{e}chet\xspace simplification in polynomial time?

In this section, we present a construction which proves that under the Hausdorff distance, computing the optimal simplified polyline is NP-hard.

\subsection {Undirected Hausdorff distance}

We first consider the undirected (or bidirectional) Hausdorff distance; that is, we require both the maximum distance from the initial polyline $P$ to the simplified polyline $Q$ and the maximum distance from $Q$ to $P$ to be at most $\varepsilon$.

\begin{theorem}
	Given a polyline $P = \langle p_1, p_2, \ldots, p_n \rangle$ and a value $\varepsilon$, the problem of computing a minimum length subsequence $Q$ of $P$ such that the undirected Hausdorff distance between $P$ and $Q$ is at most $\varepsilon$ is NP-hard.
\end{theorem}

We prove the theorem with a reduction from Hamiltonian cycle in segment intersection graphs.
It is well-known that Hamiltonian cycle is NP-complete in planar graphs~\cite {gjs-snp-74}, and
by Chalopin and Gon{\c c}alves' proof~\cite {cg-epgigsp-09} of Scheinerman's conjecture~\cite {s-icmipg-84} that the planar graphs are included in the segment intersections graphs
it follows that Hamiltonian cycle in segment intersections graphs is NP-complete.

Let $S$ be a set of $n$ line segments in the plane, and assume all intersections are proper (if not, extend the segments slightly).
Let $G$ be its intersection graph (i.e. $G$ has a vertex for every segment in $S$, and two vertices in $G$ are connected by an edge when their corresponding segments intersect).
We assume that $G$ is connected; otherwise, clearly there is no Hamiltonian cycle in $G$.

We first construct an initial polyline $P$ as follows. (Figure~\ref {f:undirNP} illustrates the construction.)
Let $\cal A$ be the arrangement of $S$, let $p$ be some endpoint of a segment in $S$, and let $\pi$ be any path on $\cal A$ that starts and finishes at $p$ and visits all vertices and edges of $\cal A$ (clearly, $\pi$ may reuse vertices and edges). Then $P$ is simply $3n+1$ copies of $\pi$ appended to each other.
Consequently, the order of vertices in $Q$ now must follow the order of these copies.
We now set $\varepsilon$ to a sufficiently small value.

Now, an output polyline $Q$ with Hausdorff distance at most $\varepsilon$ to $P$ must also visit all vertices and edges of $\cal A$, and stay close to $\cal A$. If $\varepsilon$ is sufficiently small, there will be no benefit for $Q$ to ever leave $\cal A$.

\begin{figure}[tb]
	\centering
	\includegraphics[scale=1]{undirNP2}
	\caption{The construction: $\cal A$ is the arrangement of a set of segments $S$. We build an input path $P$ that ``paints'' over $S$ completely, and we are looking for an output path $Q$ that corresponds to a Hamiltonian cycle. In this case, there is no Hamiltonian cycle, and the path gets stuck.}
	\label{f:undirNP}
\end{figure}

\begin {lemma}
A solution $Q$ of length $3n+1$ exists if and only if $G$ admits a Hamiltonian~cycle.
\end {lemma}

\begin {proof}
Clearly, any simplification $Q$ will need to visit the $2n$ endpoints of the segments in $S$, and since it starts and ends at the same point $p$, will need to have length at least $2n+1$.
Furthermore, $Q$ will need to have at least two internal vertices on every segment $s \in S$: once to enter the segment and once to leave it (note that we cannot enter or leave a segment at an endpoint since all intersections are proper intersections). This means the minimum number of vertices possible for $Q$ is $3n + 1$.

Now, if $G$ admits a Hamiltonian cycle, it is easy to construct a simplification with $3n+1$ vertices as follows. We start at $p$ and collect the other endpoint of the segment $s_1$ of which $p$ is an endpoint. Then we follow the Hamiltonian cycle to segment $s_2$; by definition $s_1s_2$ is an edge in $G$ so their corresponding segments intersect, and we use the intersection point to leave $s_1$ and enter $s_2$. We proceed in this fashion until we reach $s_n$, which intersects $s_1$, and finally return to $p$.

On the other hand, any solution with $3n + 1$ vertices must necessarily be of this form and therefore imply a Hamiltonian cycle: in order to have only $3$ vertices per segment the vertex at which we leave $s_1$ must coincide with the vertex at which we enter some other segment, which we call $s_2$, and we must continue until we visited all segments and return to $p$.
\end {proof}

\subsection {Directed Hausdorff distance: $P \to Q$}

We now shift our attention to the directed Hausdorff distance from $P$ to $Q$: we require the maximum distance from $P$ to $Q$ to be at most $\varepsilon$, but $Q$ may have a larger distance to $P$.
The previous reduction does not seem to work because there is always a Hamiltonian Cycle of length $2n$ for this measure.
Therefore, we prove the NP-hardness differently.

The idea is to reduce from {\scshape Covering Points By Lines}, which is known to be both NP-hard~\cite{megiddo82complexity} and APX-hard~\cite{kumar00hardness}: given a set $S$ of points in $\mkmbb{R}^2$, find the minimum number of lines needed to cover the points.

Let $S=\{s_1, \ldots, s_n\}$ be an instance of the {\scshape Covering Points By Lines} problem.
We fix $\varepsilon$ based on $S$ and present the construction of a polyline connecting a sequence of $m=\mbox{poly}(n)$ points: $P=\langle p_1,p_2,...,p_m\rangle$ such that for every $1 \le i \le n$, we have $s_i = p_j$ for some $1 \le j \le m$.
The idea is to force the simplification $Q$ to cover all points in $P$ except those in $S$, such that in order for the final simplification to cover all points, we only need to collect the points in $S$ using as few line segments as possible.
To this end, we will place a number of {\em forced points} $F \subset P$, where a point $f$ is {\em forced} whenever its distance to any line through any pair of points in $P$ is larger than $\varepsilon$. Since $Q$ must be defined by a subset of points in $P$, we will never cover $f$ unless we choose $f$ to be a vertex of $Q$. Figure~\ref {f:optDPHard1a} shows this idea.
On the other hand, we need to place points that allow us to freely draw every line through two or more points in $S$. We create two point sets $L$ and $R$ to the left and right of $S$, such that for every line through two of more points in $S$, there are a point in $L$ and a point in $R$ on that line. Finally, we need to build additional scaffolding around the construction to connect and cover the points in $L$ and $R$. Figure~\ref {f:optDPHard1b} shows the idea.

We now treat the construction in detail, divided into three parts with different purposes:
\begin{enumerate}[noitemsep,nolistsep]
	\item a sub-polyline that contains $S$;
	\item a sub-polyline that contains $L$ and $R$; and
	\item two disconnected sub-polylines which share the same purpose: to guarantee that all vertices in the previous sub-polyline are themselves covered by $Q$.
\end{enumerate}
\medskip

\subsubsection*{Part 1: Placing $S$}
First, we assume that every point in $S$ has a unique $x$-coordinate; if this is not the case, we rotate $S$ until it is.\footnote {Note that, by nature of the {\scshape Covering Points By Lines} problem, we cannot assume $S$ is in general position; however, a rotation for which all $x$-coordinates are unique always exists.}
We also assume that every line through at least two points of $S$ has a slope between $-1$ and $+1$; if this is not the case, we vertically scale $S$ until it is.
Now, we fix $\varepsilon$ to be smaller than half the minimum difference between any two $x$-coordinates of points in $S$, and smaller than the distance from any line through two points in $S$ to any other point in $S$ not on the line.

We place $n+1$ forced points $f_1,f_2,...,f_n,f_{n+1}$ such that the $x$-coordinate of $f_i$ lies between the $x$-coordinates of $s_{i-1}$ and $s_i$ and the points lie alternatingly above and below $S$;
we place them such that the distance of the line segment $\overline{f_if_{i+1}}$ to $s_i$ is $\frac{3}{2}\varepsilon$ and the distance of $\overline{f_if_{i+1}}$ to $s_{i-1}$ is larger than $\varepsilon$.
Next, we place two auxiliary points $t^+_i$ and $t^-_i$ on $\overline{f_if_{i+1}}$ such that the distance of each point to $s_i$ is $2\varepsilon$; refer to Figure~\ref{f:optDPHard1a}.
Then let $\tau_1 = \langle f_1, t^+_1, s_1, t^-_1, f_2, t^-_2, s_2, t^+_2, f_3, \ldots, f_{n+1} \rangle$ be a polyline connecting all points in the construction; $\tau_1$ will be part of the input segment $P$.

The idea here is that all forced points must appear on $Q$, and if only the forced points appear on $Q$, everything in the construction will be covered {\em except} the points in $S$ (and some arbitrarily short stubs of edges connecting them to the auxiliary points).
Of course, we could choose to include more points in $\tau_1$ in $Q$ to collect some points of $S$ already.
However, this would cost an additional three vertices per collected point (note that using fewer than three, we would miss an auxiliary point instead), and in the remainder of the construction we will make sure that it is cheaper to collect the points in $S$ separately later.

\begin{figure}[tb]
	\centering
	\begin{minipage}{0.45\textwidth}
		\centering
		\includegraphics[scale=1,page=1]{optDPHard1}
		\caption{Example of $\tau_1$ where ${n=3}$. For a given $\varepsilon$, the (simplified) polyline $f_1,f_2,f_3,f_4$ covers the gray area but not the blue points $s_1,s_2,s_3$.}
		\label{f:optDPHard1a}
	\end{minipage}\hfill
	\begin{minipage}{0.45\textwidth}
		\centering
		\includegraphics[page=2]{optDPHard1}
		\caption{Construction to allow the lines that can be used to cover the points of $S$.
		To ensure the order of vertices in $Q$, we create copies of $L$ and $R$.
      Then, $Q$ can use them alternatingly.
		}
		\label{f:optDPHard1b}
	\end{minipage}
\end{figure}

\subsubsection*{Part 2: Placing and covering $L$ and $R$}

In the second part of the construction we create two sets of $O(n^2)$ vertices, $L$ and $R$,
which can be used to make links that cover $S$.
Consider the set $\Lambda$ of all $k \le \frac{n^2-n}{2}$ unique lines that pass through at least two points in $S$.
We create two sets of $k$ points $L = \{l_1, l_2, \ldots, l_k\}$ and $R = \{r_1, r_2, \ldots, r_k\}$ with the following properties:
\begin {itemize}[nolistsep]
\item the line through $l_i$ and $r_i$ is one of the $k$ lines in $\Lambda$,
\item the line through $l_i$ and $r_j$ for $i \ne j$ has distance more than $\varepsilon$ to any point in $S$, and
\item the points in $L$ (resp. $R$) all lie on a common vertical line.
\end {itemize}
\medskip
Clearly, we can satisfy these properties by placing $L$ and $R$ sufficiently far from $S$.
We create a vertical polyline for each set, which consists of $k-1$ non-overlapping line segments that are connecting consecutive vertices in their $y$-order from top to bottom.
Let  $R_1$ and $L_1$ be such polylines containing $k$ vertices each.

Now, each line that covers a subset of $S$ can become part of $Q$ by selecting the correct pair of vertices from $R$ and $L$. However, if we want $Q$ to contain multiple such lines, this will not necessarily be possible anymore, since the order in which we visit $R_1$ and $L_1$ is fixed (and to create a line, we must skip all intermediate vertices). The solution is to make $h$ copies\footnote {The copies are in exactly the same location. If the reader does not like that and feels that points ought to be distinct, she may imagine shifting each copy by a sufficiently small distance (smaller than $\varepsilon/h$) without impacting the construction.} $R_1, R_2, \ldots, R_h$ of $R_1$ and $h$ copies $L_1, L_2, \ldots, L_h$ of $L_1$ and visit them alternatingly.
Here $h = \lceil \frac{n}{2} \rceil$ is the maximum number of lines necessary to cover all points in $S$ in the {\scshape Covering Points By Lines} problem.

We create a polyline $\tau_2$ that contains $R_1$ and $L_1$ by connecting them with two new vertices $u^{r}_1$ and $u^{\ell}_1$.
Both $u^{r}_1$ and $u^{\ell}_1$ should be located far enough from $R_1$ and $L_1$ such that a link between $u^{r}_1$ and a vertex in $L_1$ (and $u^{\ell}_1$ with $R_1$) will not cover any point in~$S$.
To ensure that the construction ends at the last vertex in $L_h$, we use two vertices $v^{\ell}_1$ and $v^{r}_1$, see Figure~\ref{f:optDPHard1b}.
Let $\tau_2 = \langle R_1,u^{r}_1,u^{\ell}_1,L_1,v^{\ell}_1,v^{r}_1,R_2,u^{r}_2,u^{\ell}_2,L_2,v^{\ell}_2,\ldots,L_h \rangle$ be a polyline connecting all points in the construction; $\tau_2$ will also be part of the input $P$.

\subsubsection*{Part 3: Putting it together}
All vertices in $\tau_1$ can be covered by the simplification $\langle f_1,f_2,...,f_{n+1} \rangle$ and a suitable choice of links in $\tau_2$.
Therefore, the last part is a polyline that will definitely cover all vertices in $\tau_2$ and at the same time, serve as a proper connection between $\tau_1$ and $\tau_2$.
Consequently, all vertices in this part will also be {\em forced} and therefore be a part of the final simplified polyline.

\begin{figure}[tb]
	\centering
	\includegraphics[scale=1]{NPhardscheme}
	\caption{Schematic views of connecting up different parts of the NP hardness construction into a single polyline.
		The bold polylines show $\tau_1$ and $\tau_2$ and indicate multiple parts of $P$ close together.}
	\label{f:NPhardscheme}
\end{figure}

We divide this last part into two disconnected polylines: $\tau_{3_a}$ and $\tau_{3_b}$.
The main part of $\tau_{3_a}$ is a vertical line segment $e$ that is parallel to $R_1$.
There is a restriction to $e$: the Hausdorff distance from each of $R_i, u^{r}_i, v^{r}_j (1 \le j < i \le h)$, and also from line segments between them to $e$ should not be larger than $\varepsilon$.
In order to force $e$ to be a part of the simplified polyline, we must place its endpoints away from $\tau_2$.
Then, $\tau_1$ and $\tau_2$ can be connected by connecting $f_{n+1} \in \tau_1$ and the first vertex in $R_1$ to different endpoints of $e$.

Next, the rest of $\tau_2$ that has not been covered yet, will be covered by $\tau_{3_b}$.
First, we have a vertical line segment $g$ that is similar to $e$, in order to cover $L_i, u^{\ell}_i, v^{\ell}_j$ ($1 \le j < i \le h$), and all line segments between them.
Then, a horizontal line segment $z$ is needed to cover all horizontal line segments  $\overline{u^{r}_iu^{\ell}_i}$ and $\overline{v^{\ell}_jv^{r}_j}$ ($1 \le j < i \le h$).
Similar to $e$, the endpoints of $g$ and $z$ should be located far from $\tau_2$,
implying that $z$ intersects both $e$ and $g$. This is shown in Figure~\ref{f:NPhardscheme}, left.
We complete the construction by connecting the upper endpoint of $g$ to the left endpoint of $z$ and the
lower endpoint of $g$ to the last vertex in $L_h$.

We can show that even if the input is restricted to be non-self-intersecting, the simplification problem
is still NP-hard. We modify the last part of the construction to remove the three intersections.
Firstly, we shorten $z$ on the right side and place it very close to $u^{r}_1$. Since the right
endpoint of $z$ is an endpoint of the input, it will always be included in a simplification.
Secondly, to remove the intersection of $g$ and $z$, we bring the upper endpoint of $g$ to just below $z$,
so very close to $u^{\ell}_1$. To make sure that we must include $g$ in the simplification we
connect the lower endpoint of $g$ to $f_1$. This connecting segment is further from $g$ so it cannot
help enough to cover the lower part of $g$; only $g$ itself can do that. This is shown in Figure~\ref{f:NPhardscheme}, right.

\begin{figure}
	\centering
	\includegraphics[scale=0.95]{optDPHard3}
	\caption{The full construction showing that computing \OPTH is NP-hard.
		$\tau_{3_a}$ is a line segment $e = \overline{f_6,f_7}$ and $\tau_{3_b} = \langle f_8,...,f_{11} \rangle$.
		The endpoints of the construction are $f_{11}$ and $l'_6 \in L_2$.

		The gray area is within $\varepsilon$ from the sub-polyline consist of all green vertices: $\langle f_{11},..,f_8,f_1,..,f_7 \rangle$, which is a part of the simplification.
		The rest of the simplification is the purple polyline $\langle f_7,r_6,l_{1},l_{4},r'_{3},l'_6 \rangle$ that covers all blue points $S$ ($r'_{3} \in R_2$ and $l'_{6}  \in L_2$).
		In order to show the red points clearly, $\varepsilon$ used in this figure is larger than it needs to be.
		Consequently, a link $\overline{s_1s_4}$ can cover $s_2$ and $s_3$, which is not possible if $\varepsilon$ is considerably smaller.}
	\label{f:optDPHard2}
\end{figure}

We present a full construction of $P = \langle \tau_{3_b},\tau_1,\tau_{3_a},\tau_{2} \rangle$ for $n=4$ in Figure~\ref{f:optDPHard2}.

\begin{theorem}
	Given a polyline $P = \langle p_1, p_2, \ldots, p_n \rangle$ and a value $\varepsilon$, the problem of computing a minimum length subsequence $Q$ of $P$ such that the directed Hausdorff distance from $P$ to $Q$ is at most $\varepsilon$ is NP-hard.
\end{theorem}

\begin {proof}
The construction contains $O(n^2)$ vertices and a part of its simplified polyline with a constant number of vertices that contains $f_1,f_2,...,f_{n+1}$ and all vertices in $\tau_{3_a}$ and $\tau_{3_b}$ can cover all vertices in the construction except for $S$.
Then, the other part of the simplified polyline depends on links to cover points in $S$. These links
alternate between going from left to right and from right to left. Between two such links, we will
have exactly two vertices from some $L$ or two from some $R$.

The only two ways a point $s_i$ can be covered is by including $s_i$ explicitly or by one of the $O(n)$ links
that cover $s_i$ and at least another point $s_j$. If we include $s_i$ explicitly then we must also include
$t_i^+$ and $t_i^-$ or else they are not covered. It is clearly more efficient (requiring fewer vertices
in the simplification) if we use a link that covers $s_i$ and another $s_j$, even if $s_j$ is covered
by another such link too. The links of this type in an optimal simplified polyline correspond
precisely to a minimum set of lines covering $s_1,\ldots,s_n$.
Therefore, the simplified polyline of the construction contains a solution to {\scshape Covering Points By Lines} instance. Since $P$ in the construction is simple, the theorem holds even for simple input.
\end {proof}

\subsection {Directed Hausdorff distance: $Q \to P$}

Finally, we finish this section with a note on the reverse problem: we want to only bound the directed Hausdorff distance from $Q$ to $P$ (we want the output segment to stay close to the input segment, but we do not need to be close to all parts of the input). This problem seems more esoteric but we include it for completeness. In this case, a polynomial time algorithm (reminiscent of Imai-Iri) optimally solves the problem.

\begin {theorem}
	Given a polyline $P = \langle p_1, p_2, \ldots, p_n \rangle$ and a value $\varepsilon$, the problem of computing a minimum length subsequence $Q$ of $P$ such that the directed Hausdorff distance from $Q$ to $P$ is at most $\varepsilon$ can be solved in polynomial time.
\end {theorem}
\begin{proof}
We compute the region with distance $\varepsilon$ from $P$ explicitly. For every link we compute if it lies within that
region, and if so, add it as an edge to a graph. Then we find a minimum link path in this graph. For a possibly self-intersecting polyline as the input a simple algorithm takes $O(n^4)$ time (faster is possible).
\end{proof}

\section{Algorithmic complexity of the Fr\'{e}chet\xspace distance}
\label{sec:optalg}

In this section, we show that for a given polyline $P = \langle p_1,p_2,...,p_n \rangle$ and an error $\varepsilon$, the optimal simplification $Q = \OPTF(P,\varepsilon)$ can be computed in polynomial time using a dynamic programming approach.

\subsection {Observations}

Note that a
link $\overline{p_ip_j}$ in $Q$ is not necessarily within Fr\'{e}chet\xspace distance $\varepsilon$ to the sub-polyline $\langle p_i,p_{i+1},...,p_j \rangle$ (for example, $\overline{p_1p_3}$ in Figure~\ref{f:noptFrech}).
Furthermore, a (sequence of) link(s) in $Q$ could be mapped to an arbitrary subcurve of $P$, not necessarily starting or ending at a vertex of $P$.
For example, in Figure~\ref{f:epsIIFrech2}, the sub-polyline $\langle p_1,p_4,p_5,p_6 \rangle$ has Fr\'{e}chet\xspace distance $\varepsilon$ to a sub-polyline of $P$ that starts at $p_1$ but ends somewhere between $p_4$ and $p_5$.
At this point, one might imagine a dynamic programming algorithm which stores, for each vertex $p_i$ and value $k$, the point $p(i, k)$ on $P$ which is the farthest along $P$ such that there exists a simplification of the part of $P$ up to $p_i$ using $k$ links that has Fr\'{e}chet\xspace distance at most $\varepsilon$ to the part of $P$ up to $p(i, k)$. However, the following lemma shows that even this does not yield optimality; its proof is the example in Figure~\ref {f:NotSuf}.

\begin {lemma} \label {lem:NotSuf}
  There exists a polyline $P = \langle p_1, \ldots, p_{12} \rangle$ and an optimal $\varepsilon$-Fr\'{e}chet\xspace-simplification that has to use $p_4$, $Q = \langle p_1, p_2, p_4, p_5, p_{12}\rangle$ using $4$ links,
  with the following properties:
  \begin {itemize}
    \item There exists a partial simplification $R = \langle p_1, p_3, p_4 \rangle$ of $\langle p_1, \ldots, p_4 \rangle$ and a point $r$ on $\overline {p_5p_6}$ such that the Fr\'{e}chet\xspace distance between $R$ and the subcurve of $P$ up to $r$ is $\le \varepsilon$, but
    \item there exists no partial simplification $S$ of $\langle p_4, \ldots, p_{12} \rangle$ that is within Fr\'{e}chet\xspace distance $\varepsilon$ to the subcurve of $P$ starting at $r$ that uses fewer than $7$ links.
  \end {itemize}
\end {lemma}

\begin{figure}
	\centering
	\includegraphics[scale=1]{Lemma7}
	\caption{An example where the farthest-reaching simplification up to $p_4$ using $2$ links is not part of any solution that uses $p_4$. Left: the input curve $P$ in black, with circles of radius $\varepsilon$ around all vertices in light gray. Middle: A $2$-link simplification of $\langle p_1, p_2, p_3, p_4 \rangle$ that reaches up to a point on $\overline {p_4p_5}$ (in yellow) which can be extended to a $4$-link simplification of $P$. Right: A $2$-link simplification of $\langle p_1, p_2, p_3, p_4 \rangle$ that reaches point $r$ on $\overline {p_5p_6}$ (in pink) which does not allow simplification.}
	\label{f:NotSuf}
\end{figure}

\subsection {A dynamic programming algorithm}

Lemma~\ref {lem:NotSuf} shows that storing a single data point for each vertex and value of $k$ is not sufficient to ensure that we find an optimal solution. Instead, we argue that if we maintain the set of {\em all} points at $P$ that can be ``reached'' by a simplification up to each vertex, then we can make dynamic programming work.
We now make this precise and argue that the complexity of these sets of reachable points is never worse than linear.

First, we define $\pi$, a parameterization of $P$ as a continuous mapping: $\pi:[0,1] \rightarrow \mkmbb{R}^2$ where $\pi(0) = p_1$ and $\pi(1) = p_n$.
We also write $P[s,t]$ for $0 \le s \le t \le 1$ to be the subcurve of $P$ starting at $\pi(s)$ and ending at $\pi(t)$, also writing $P[t] = P[0,t]$ for short.

We say that a point $\pi(t)$ can be {\em reached} by a $(k, i)$-simplification for $0 \le k < i \le n$ if there exists a simplification of $\langle p_1, \ldots, p_i \rangle$ using $k$ links which has Fr\'{e}chet\xspace distance at most $\varepsilon$ to $P[t]$.
We let $\rho (k, i, t) = \mathtt{true}$ in this case, and $\mathtt{false}$ otherwise.
With slight abuse of notation we also say that $t$ itself is reachable, and that an interval $I$ is reachable if all $t \in I$ are reachable (by a $(k, i)$-simplification).

\begin {obs} \label {obs:rec}
  A point $\pi(t)$ can be reached by a $(k, i)$-simplification
  if and only if there exist a $0 < h < i$ and a $0 \le s \le t$ such that
  $\pi(s)$ can be reached by a $(k-1, h)$-simplification and the segment $\overline {p_hp_i}$ has Fr\'{e}chet\xspace distance at most $\varepsilon$ to $P[s,t]$.
\end {obs}

\begin {proof}
  Follows directly from the definition of the Fr\'{e}chet\xspace distance.
\end {proof}

Observation~\ref {obs:rec} immediately suggests a dynamic programming algorithm:
for every $k$ and $i$ we store a subdivision of $[0,1]$ into intervals where $\rho$ is true and intervals where $\rho$ is false, and we calculate the subdivisions for increasing values of $k$.
We simply iterate over all possible values of $h$, calculate which intervals can be reached using a simplification via $h$, and then take the union over all those intervals.
For this, the only unclear part is how to calculate these intervals.

We argue that, for any given $k$ and $i$, there are at most $n-1$ reachable intervals on $[0,1]$, each contained in an edge of $P$.
Indeed, every $(k, i)$-reachable point $\pi(t)$ must have distance at most $\varepsilon$ to $p_i$, and since the edge $e$ of $P$ that $\pi(t)$ lies on intersects the disk of radius $\varepsilon$ centered at $p_i$ in a line segment, every point on this segment is also $(k, i)$-reachable.
We denote the farthest point on $e$ which is $(k, i)$-reachable by $\hat t$.

Furthermore, we argue that for each edge of $P$, we only need to take the farthest reachable point into account during our dynamic programming algorithm.
\begin {lemma}
If $k$, $h$, $i$, $s$, and $t$ exist such that $\rho (k-1, h, s) = \rho (k, i, t) = \mathtt {true}$, and $\overline {p_hp_i}$ has Fr\'{e}chet\xspace distance $\le \varepsilon$ to $P[s,t]$, then $\overline {p_hp_i}$ also has Fr\'{e}chet\xspace distance $\le \varepsilon$ to $P[\hat s, \hat t]$.
\end {lemma}

\begin {proof}
  By the above argument, $P[s, \hat s]$ is a line segment that lies completely within distance $\varepsilon$ from $p_h$, and $P[t, \hat t]$ is a line segment that lies completely within distance $\varepsilon$ from $p_i$.

  We are given that the Fr\'{e}chet\xspace distance between $\overline {p_hp_i}$ and $P[s,t]$ is at most $\varepsilon$; this means  a mapping $f: [s, t] \to \overline {p_hp_i}$ exists such that $|\pi(x) - f(x)| \le \varepsilon$. Let $q = f(s')$. Then  $|p_h - \pi(\hat s)| \le \varepsilon$ and $|q - \pi(\hat s) | \le \varepsilon$, so the line segment $\overline{p_h q}$ lies fully within distance $\varepsilon$ from~$\hat s$.

  Therefore, we can define a new $\varepsilon$-Fr\'{e}chet\xspace mapping between $P [\hat s, \hat t]$ and $\overline {p_hp_i}$ which maps $\hat s$ to the segment $\overline{p_h q}$, the curve $P [\hat s, t]$ to the segment $\overline{q p_i}$ (following the mapping given by $f$), and the segment $\overline{\pi (t) \pi (\hat t)}$ to the point $p_i$.

\end {proof}

Now, we can compute the optimal simplification by maintaining a $k\times n\times n$ table storing $\rho (k, i, \hat t)$, and calculate each value by looking up $n^2$ values for the previous value of $k$, and testing in linear time for each combination whether the Fr\'{e}chet\xspace distance between the new link and $P [\hat s, \hat t]$ is within $\varepsilon$ or not.

\begin{theorem}
Given a polyline $P = \langle p_1,...,p_n \rangle$ and a value $\varepsilon$, we can compute the optimal polyline simplification of $P$ that has Fr\'{e}chet\xspace distance at most $\varepsilon$ to $P$ in $O(k n^5)$ time and $O(k n^2)$ space, where $k$ is the output complexity of the optimal simplification.
\end{theorem}

\section{Conclusions}
In this paper, we analyzed well-known polygonal line simplification algorithms, the Douglas-Peucker and the Imai-Iri algorithm, under both the Hausdorff and the Fr\'{e}chet\xspace distance. Both algorithms are not optimal when considering
these measures.
We studied the relation between the number of vertices in the resulting simplified polyline from both algorithms and the enlargement factor needed to approximate the optimal solution.
For the Hausdorff distance, we presented a polyline where the optimal simplification uses only a constant number of vertices while the solution from both algorithms is the same as the input polyline, even if we enlarge $\varepsilon$ by any constant factor.
We obtain the same result for the Douglas-Peucker algorithm under the Fr\'{e}chet\xspace distance.
For the Imai-Iri algorithm, such a result does not exist but we have shown that we will need a constant factor
more vertices if we enlarge the error threshold by some small constant, for certain polylines.

Next, we investigated the algorithmic problem of computing the optimal simplification using the Hausdorff and the Fr\'{e}chet\xspace distance.
For the directed and undirected Hausdorff distance, we gave NP hardness proofs. Interestingly, the optimal simplification in the other direction (from output to input) is solvable in polynomial time.
Finally, we showed how to compute the optimal simplification under the Fr\'{e}chet\xspace distance in polynomial time.
Our algorithm is based on the dynamic programming method and runs in $O(kn^5)$ time and requires $O(kn^2)$ space.

A number of challenging open problems remain. First, we would like to show NP-hardness
of computing an optimal simplification using the Hausdorff distance when the simplification may not
have self-intersections. Second, we are interested in the computational status of
the optimal simplification under the Hausdorff distance and the Fr\'{e}chet\xspace distance when the
simplification need not use the vertices of the input. Third, it is possible that the efficiency of our
algorithm for computing an optimal simplification with Fr\'{e}chet\xspace distance at most $\varepsilon$ can be improved.
Fourth, we may consider optimal polyline simplifications using the weak Fr\'{e}chet\xspace distance.

\input{fullversion.bbl}

\end{document}

redpajama_set_name: RedPajamaArXiv